【问题标题】:Laravel 5: how to safely override the default User::create() for two tables?Laravel 5:如何安全地覆盖两个表的默认 User::create()?
【发布时间】:2016-02-08 05:08:46
【问题描述】:

对于 Laravel 5.2,我希望来宾用户在注册时提供他们的名字和姓氏。 first_name 和 last_name 字段来自不同的模型People,这基本上就像他们扩展配置文件的表:

Users
    id
    email
    username

People
    user_id
    first_name
    last_name
    profile
    ...

在默认的AuthController中,它调用User类的create方法是这样的:

/**
 * 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']),
    ]);
}

但是我应该怎么做才能覆盖这个方法,以便它通过向上述两个表中添加数据来创建用户?

【问题讨论】:

    标签: model controller laravel-5 registration


    【解决方案1】:

    您可以添加从 User 到 People 模型的一对一关系。因此,一旦您创建了一个用户,您就可以调用该用户并添加详细信息,如下所示:

    $user->people()->create(['first_name]=>$request->input('first_name'));
    

    请参阅 Laravel 文档以了解如何创建一对一关系。这会给你一个开始。

    【讨论】:

    • 您好,再次感谢!!我想我现在才明白这一点。非常感谢您的确认。我在想的是,我可以定义新用户,而不是返回,然后使用上面的行,然后返回 $user。那是正确的方法吗?我已经定义了模型之间的所有关系。
    • 是的,你也可以这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多