Laravel用户身份验证脚手架 - >将数据保存到两个表

时间:2017-08-02 00:02:35

标签: php laravel authentication laravel-5 laravel-5.4

我对laravel相对较新,并且有一个需要手动配置的项目。

背景:

  • 使用身份验证脚手架(处理用户 注册和登录)
  • 我有两个表:个人资料和用户。
  • 所有用户都有一个个人资料。
  • 但并非所有个人资料都有用户。

设定: 个人资料表 => id,名字,头像等 用户表 => profile_id,电子邮件,密码

由于Laravel Auth(脚手架)处理注册和登录。我想在保存用户表之前将数据保存到Profile表中。

protected function create(array $data)
{

    $profile = Profile::create
    ([
        'slug' => $data['name'],
        'name' => $data['name'],
    ]);

    $user = User::create
    ([
        'profile_id' => $profile->id,
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);

    return $user;
}

但这不起作用。并且错误消息告诉我在查询中没有分配profile_id。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的模型是如何设置的?如果Eloquent和您的数据库设置正确,您可以这样做:

$profile = new Profile;
$profile->slug = $data['name'];
$profile->name = $data['name'];

$profile->save();
// At this point now you'll be able to get an ID of the profile

$user = new User;
$user->profile_id = $profile->id;
$user->name = $data['name'];
$user->email = $data['email'];
$user->password = bcrypt($data['password']);

$user->save();

return $user;