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 文档以了解如何创建一对一关系。这会给你一个开始。