2017-04-05 15 views
1

では動作しませんを作成し、私はいつも私のコードが更新proposalServiceに新しい行を作成ではなく、5.4Laravel UpdateORは関係

にlaravelに私のコードここ

$id = $request->id; 

$find = Presal::find($id); 
$find->user_id = $request->customer_id; 
$find->proposalid = $request->proposalid; 
$psal = $find->save(); 

if ($psal) { 
    foreach ($request->service_item_id as $key => $n) { 
     $find->proposalService()->updateOrCreate([ 
      'service_item_id' => $request->service_item_id[$key], 
      'start_date'  => $request->start_date[$key], 
      'end_date'  => $request->end_date[$key], 
      'service_type_id' => $request->service_type_id[$key], 
      'vendor_submit' => $request->vendor_submit[$key], 
     ]); 
    } 
} 

を私の関連テーブルを更新します。 新しい場合は作成し、存在する場合は更新する方法を教えてください。

+0

更新する複合キーは何ですか?ここで使用した属性はすべて意味しますか? – mrabbani

答えて

0

updateOrCreate()は2つの引数(2つの配列)をとります。最初の配列では、チェックする要素(通常は主キーとその他の要素)を渡します。次に、これらの要素が存在するかどうかをチェックし、存在しない場合は新しい要素を作成します。ここで

$find->proposalService()->updateOrCreate(
    [ 
     'service_item_id' => $request->service_item_id[$key], 
     'service_type_id' => $request->service_type_id[$key] 
    ], 
    [ 
     'start_date' => $request->start_date[$key], 
     'end_date' => $request->end_date[$key], 
     'vendor_submit' => $request->vendor_submit[$key] 
    ] 
); 

私は、彼らがすでに存在するかどうかを確認するために、最初の引数としてservice_item_idservice_type_idを使用。