【发布时间】:2017-05-16 12:41:36
【问题描述】:
在 Laravel 5.4 中,他们对用户身份验证系统进行了硬编码,因此当您使用工匠命令 'make:auth' 时,所有内容都会在后台为您创建,但问题是当我的用户成功注册时我想要我想创建一个“个人资料类”的新实例并将表格列设为空,直到用户填写他的个人资料,那么我在哪里可以放置创建用户个人资料的代码?
【问题讨论】:
标签: php laravel laravel-5.4 laravel-artisan
在 Laravel 5.4 中,他们对用户身份验证系统进行了硬编码,因此当您使用工匠命令 'make:auth' 时,所有内容都会在后台为您创建,但问题是当我的用户成功注册时我想要我想创建一个“个人资料类”的新实例并将表格列设为空,直到用户填写他的个人资料,那么我在哪里可以放置创建用户个人资料的代码?
【问题讨论】:
标签: php laravel laravel-5.4 laravel-artisan
在RegisterController 中,您可以覆盖registered 函数。
该函数在用户注册成功后直接调用。
/**
* The user has been registered.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function registered(Request $request, $user)
{
// Create a profile here
}
或者,您也可以直接在用户模型上使用模型事件来执行此操作
class User extends Authenticatable
{
protected static function boot()
{
parent::boot();
static::creating(function($user) {
// Create profile here
});
}
}
【讨论】:
在创建新用户后,在 create() 方法上的 app\Http\Controllers\Auth\RegisterController.php 中,您可以立即执行以下操作:
use App\Profile; // <-- Import this at the top
protected function create(array $data)
{
$user = User::create([ // <-- change this as you see fit
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
Profile::create(['user_id' => $user->id]);
return $user;
}
【讨论】: