2017-04-05 55 views
1

工作,我要更新laravel 5.4Laravel UpdateOR創建不與關係

我的代碼

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

這裏永遠是我的代碼proposalService創建一個新的行而不是更新我的相關表格。 如何創建新的和更新(如果存在)。

+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作爲第一個參數,以檢查它們是否已經存在。