2016-08-04 12 views
0

私はUserモデルとUserInfoモデルを持っています。彼らは1対1の関係です。Laravel:マス課題は新しいレコードを挿入するか、または既存の更新を追加する

ユーザーがサインアップすると、彼はさらに詳細な情報を含む非常に大きなフォームを入力します。これはUserInfoモデルで表されるuser_infoテーブルに含まれています。

私は現在、それが動作しますが、それは二度目に実行された場合、それは同じユーザのために及び他UserInfoレコードを作成します。この

$user->user_info()->create($request->all()); 

を行います。

のUserInfoレコードがすでにこのユーザーのために存在する場合、それが唯一のupdtesように私はそれを行うことができます方法はありexisiting 1

このような質量の割り当てを操作することができupdateOrCreateのような方法がありますか?

UserInfoレコードがすでにこのUser上に存在する場合ようにするため、それだけであなたはupdateOrCreate()メソッドを使用してupdateOrCreateの機能を実現することができ、これらの新しい値

+1

updateOrCreate(['id' => $ user-> id]、$ request-> all()); ' – jaysingkar

+0

上記のクエリを試してください – jaysingkar

+0

@jaysingkarそれはしませんでした作業。エラー: 'updateOrCreate()は型配列、整数が与えられている必要があります' –

答えて

0

で更新されます。
使用方法:お使いの場合には

Model::updateOrCreate(
    ['primary_key' => 8], 
    ['field' => 'value', 'another_field' => 'another value'] 
); 

は、次のようにフィット使用することができます。['id'=>$user->id]のidの代わりに

$user->user_info()->updateOrCreate(['id'=>$user->id],$request->all()); 

は、お使いのモデルの主キーの名前を使用します。

+0

'['id' => $ user-> id]のidの代わりに、モデルの主キーの名前を使用してください。 – jaysingkar

+0

ありがとうございます。出来た :)。あなたの回答を編集して、あなたが作ったコメントを他のユーザーにも含めてください –

関連する問題