Day11 跟着官方文件学习Laravel-利用Eloquent ORM改写专案

laravel有提供我们ORM(object-relational mapper),让我们可以利用Model来跟 DB做互动。
我们今天的目标就是利用Eloquent来改写登入跟注册。

首先我们要先创建一个User的Model,但预设laravel里就有个User model所以我们先把它删了。
接着输入指令

php artisan make:model User

好了!创建好我们就可以使用罗

来改一下登入的写法,我们可以在controller中另写一个方法

class LoginController extends Controller
{
    public function login(Request $request){
        $account = $request->input('account');
        $password = $request->input('password');

        $user = DB::table('users')->where('account', '=', $account)
                                  ->first();
        if(Hash::check($password, $user->password)){
            return "你好,我的帐号是".$request->input('account');
        }
        return Redirect::back()->withErrors(['帐号或密码错误']);
    }

    public function loginWithORM(Request $request){
        $account = $request->input('account');
        $password = $request->input('password');
        $user = User::query()
        ->where('account', $account)
        ->first();
        if(Hash::check($password, $user->password)){
            return "你好,我的帐号是".$user->account;
        }
        return Redirect::back()->withErrors(['帐号或密码错误']);
    }
}

记得修改下route

Route::post('/login', [LoginController::class, 'loginWithORM']);

试试看可不可行,登入看看吧~我这边可以
再来我们可以去改改注册

public function handle()
    {
        $account = $this->argument('account');
        $password = $this->argument('password');
        $username = $this->argument('username');
        $validator = Validator::make(['password' => $password], [
            'password' => 'regex:' . SignUp::PASSWORD_REGEX
        ]);

        if ($validator->fails()) {
            $this->error("密码需要6位数以上,并且至少包含大写字母、小写字母、数字、符号各一");
            return 1;
        }
        $user = User::where('account', $account)->first();
        // $user = DB::table('users')->where('account', $account)->first();
        if($user !== null){
            $this->error("帐号重复注册");
            return 1;
        }
        User::create([
            'account' => $account,
                'password' => Hash::make($password),
                'name' => $username
        ]);
        // DB::table('users')->insert([
        //         'account' => $account,
        //         'password' => Hash::make($password),
        //         'name' => $username
        //     ]);
        $this->line("帐号注册成功");
        return 0;
    }

但若你要可以在你的Model上create资料,必须加上这行

protected $guarded = [];

也试着再注册一笔资料,并登入吧!

今天我们的实作成功!把登入跟注册改以ORM实作了。期待明天的到来唷!


<<:  Line Messaging API 切换图文选单 Rich Menu

>>:  [ 卡卡 DAY 10 ] - React native 如何让样式更简洁 之 margin, padding 回到 css 写法

D-1, length、size & count

很简单的一个问题,但其实了解後蛮好玩的。 When google translate length ...

Day 16:Next 布景客制化 - 让副标题显示於标题内

Hexo 网站设定当中,除了有标题的设定外,还有所谓的「副标题」来辅助主标题外想补充说明的内容。比方...

硬体安全模组 (HSM) 的身份验证最不相关-职责分离(SOD)

如今,“秘密”(secret)是认证的基础。我们通常使用密码(您知道的东西)、令牌中的加密密钥(您拥...

网路架构检视(对应:资通安全健诊)

这次最大挑战不是连假,而是 D2R 的发售,为了 SOJ 断赛我可以... 适用人员: 技术人员。 ...

[DAY 29] 章节3-9: 一切都是假象-辛普森悖论(Simpson’s paradox)(统计谬误)

3-9 一切都是假象 隔日,一大清早,飞哥与小博坐着高铁到彰化,再自行租车到位於南投鱼池乡的深山内,...