Laravel 5.4 : 创建新用户后创建 'Profile Class instance'
Laravel 5.4 : Creating 'Profile Class instance' after creating new user
在 Laravel 5.4 中,他们对用户身份验证系统进行了硬编码,因此当您使用 artisan 命令时 'make:auth' 一切都会在幕后为您创建,但问题是我想要我的用户注册成功 我想创建一个新的 'Profile Class' 实例并使 table 列为空,直到用户填写他的个人资料,那么我可以在哪里放置创建用户个人资料的代码?
在 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
});
}
}
在 app\Http\Controllers\Auth\RegisterController.php
的 create()
方法中,您可以在创建新用户后立即执行此操作:
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;
}
在 Laravel 5.4 中,他们对用户身份验证系统进行了硬编码,因此当您使用 artisan 命令时 'make:auth' 一切都会在幕后为您创建,但问题是我想要我的用户注册成功 我想创建一个新的 'Profile Class' 实例并使 table 列为空,直到用户填写他的个人资料,那么我可以在哪里放置创建用户个人资料的代码?
在 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
});
}
}
在 app\Http\Controllers\Auth\RegisterController.php
的 create()
方法中,您可以在创建新用户后立即执行此操作:
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;
}