Laravel 5:如何安全地覆盖两个表的默认 User::create()?
Laravel 5: how to safely override the default User::create() for two tables?
对于 Laravel 5.2,我希望来宾用户在注册时提供他们的名字和姓氏。 first_name 和 last_name 字段来自不同的模型 People
,对于它们的扩展配置文件,它基本上就像 table:
Users
id
email
username
People
user_id
first_name
last_name
profile
...
在默认的AuthController
中,它调用用户class的创建方法是这样的:
/**
* Create a new user instance after a valid registration.
*
* @param array $data
*
* @return User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
但是我应该怎么做才能覆盖这个方法,让它通过向上面两个table添加数据来创建一个用户呢?
您可以添加从 User 到 People 模型的一对一关系。因此,一旦您创建了一个用户,您就可以调用该用户并添加详细信息,如下所示:
$user->people()->create(['first_name]=>$request->input('first_name'));
请参阅 Laravel 文档以了解如何创建一对一关系。这会给你一个开始。
对于 Laravel 5.2,我希望来宾用户在注册时提供他们的名字和姓氏。 first_name 和 last_name 字段来自不同的模型 People
,对于它们的扩展配置文件,它基本上就像 table:
Users
id
email
username
People
user_id
first_name
last_name
profile
...
在默认的AuthController
中,它调用用户class的创建方法是这样的:
/**
* Create a new user instance after a valid registration.
*
* @param array $data
*
* @return User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
但是我应该怎么做才能覆盖这个方法,让它通过向上面两个table添加数据来创建一个用户呢?
您可以添加从 User 到 People 模型的一对一关系。因此,一旦您创建了一个用户,您就可以调用该用户并添加详细信息,如下所示:
$user->people()->create(['first_name]=>$request->input('first_name'));
请参阅 Laravel 文档以了解如何创建一对一关系。这会给你一个开始。