laravel eloquent 用模型存储子模型

laravel eloquent store submodel with model

如果用户创建了一个帐户,我想将默认设置存储在不同的 table 中。我有两个模型: UserUserSettings

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

我创建用户如下:

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

然后我试了:

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

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

ErrorException in HasAttributes.php line 818: Illegal offset type

我有 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 table

settings_id | user_id | different_options

我尝试了下面的代码并且它有效。请看一下。

    $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');
}