laravel eloquent store submodel with model

时间:2017-06-07 21:56:33

标签: model eloquent laravel-5.4 relation

如果用户创建了帐户,我希望将默认设置存储在其他表中。我有两个模型:UserUserSettings

创建用户后如何创建设置部分?

我创建用户如下:

  $user = User::create([
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);

然后我尝试了:

$user->settings()->save(new UserSettings());  

我也尝试了create方法,但没有成功。我总是收到

  

HasAttributes.php第818行中的ErrorException:非法偏移类型

User::class模型中

public function settings()
{
    return $this->hasOne(UserSetting::class, 'user_id', 'id');
}

UserSetting::class

中的倒数
public function user()
{
    return $this->belongsTo(User::class, 'id', 'user_id');
}

user_settings

  

settings_id | user_id | different_options

1 个答案:

答案 0 :(得分:1)

我尝试了下面的代码,它的工作原理。请看看。

    $user = new User;
    $user->username = "JicksonJohnson";
    $user->email = "jicksonkoottala@gmail.com";
    $user->password = bcrypt('123456');
    $user->save();
    $user->settings()->save(new UserSettings(array('user_id' => $user->id,'options' => 'test options')));

在用户模型中,我创建了一个关系。

public function settings()
{
    return $this->hasOne(UserSettings::class, 'user_id', 'id');
}