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 写法
很简单的一个问题,但其实了解後蛮好玩的。 When google translate length ...
Hexo 网站设定当中,除了有标题的设定外,还有所谓的「副标题」来辅助主标题外想补充说明的内容。比方...
如今,“秘密”(secret)是认证的基础。我们通常使用密码(您知道的东西)、令牌中的加密密钥(您拥...
这次最大挑战不是连假,而是 D2R 的发售,为了 SOJ 断赛我可以... 适用人员: 技术人员。 ...
3-9 一切都是假象 隔日,一大清早,飞哥与小博坐着高铁到彰化,再自行租车到位於南投鱼池乡的深山内,...