2017-06-07 28 views
0

ユーザーがアカウントを作成した場合、デフォルト設定を別のテーブルに保存します。私は2つのモデル:UserUserSettingsを持っています。laravel雄弁ストアモデルサブモデル

ユーザーの作成後に設定部分を作成するにはどうすればよいですか?

私は次のようにユーザーを作成します。

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

は、その後、私が試した:

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

私はまた、しかし、誰成功し、create方法を試してみました。違法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'); 
} 

で逆を持っている:私はいつもHasAttributes.phpライン818で

ErrorExceptionを受け取りますuser_settingsテーブル

settings_id | user_id | different_options

答えて

1

私は以下のコードを試してみました。見てください。

$user = new User; 
    $user->username = "JicksonJohnson"; 
    $user->email = "[email protected]"; 
    $user->password = bcrypt('123456'); 
    $user->save(); 
    $user->settings()->save(new UserSettings(array('user_id' => $user->id,'options' => 'test options'))); 

ユーザーモデルでは、私は1つの関係を作成しました。

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

ダム私は 'UserSetting :: class'のプライマリキーを文字列ではなく配列に設定しました。しかし、あなたのソリューションはaspectedとして動作します! – Ronon