2016-12-14 10 views
4

データベースにデータを更新するコードを作成しましたが、以下のようなエラーが表示されます。 dd()を使用してコードをデバッグすると、値はtrueになりました。 私のsave()メソッドで何が問題になっていますか?Laravelエラー:メソッドの保存が存在しません

Macroable.phpライン74でBadMethodCallException:存在しない保存 方法。

この私のコントローラ

public function update(Request $request, $id) 
{ 

/* 
<---- this line is my another code ----> 
*/ 

    $input = Input::all(); 
    $servicedata = $input['service_id']; 
    $employeedata = $input['emp_id']; 

    foreach ($servicedata as $key => $val) { 
     $detailservice = DetailServiceOrder::find($request->detail_service_id); 
     $detailservice->sales_order_id = $request->sales_order_id; 
     $detailservice->service_id = $input['service_id'][$key]; 
     $detailservice->order_type = $input['order_type'][$key]; 
     $detailservice->select_plan = $input['select_plan'][$key]; 
     $detailservice->qty = $input['qty'][$key]; 
     $detailservice->unit_price = $input['unit_price'][$key]; 
     $detailservice->note = $input['note'][$key]; 
     $detailservice->save(); 
    } 

    foreach ($employeedata as $key => $val) { 
     $detailemployee = DetailEmployeeOrder::find($request->detail_employee_id); 
     $detailemployee->sales_order_id = $request->sales_order_id; 
     $detailemployee->employee_id = $input['emp_id'][$key]; 
     $detailemployee->mandays = $input['mandays'][$key]; 
     $detailemployee->save(); 
    } 
} 
+0

私の推測では、 'DetailServiceOrder :: find'が何か – apokryfos

答えて

0

$detailserviceは、私が思うにnullの場合、それがnullかどうか

if (! $detailservice) continue; 
+0

を見つけることができませんが、私は、' DD($のdetailservice) '値がnullでない – rafitio

+1

が、ここでは、このリンクを参照してくださいを使用してチェックするときということです。 http://stackoverflow.com/questions/35896756/method-save-does-not-exist-when-saving-laravel-5-2-model –

1

どうかを確認する必要がありたぶん、別のアプローチを試してみてください?あなたはそれがsave()メソッドを使用していないため、レコードが存在するかどうかを確認する必要はありません。この場合

public function update(Request $request, $id) 
{ 

/* 
<---- this line is my another code ----> 
*/ 

    $input = Input::all(); 
    $servicedata = $input['service_id']; 
    $employeedata = $input['emp_id']; 

    foreach ($servicedata as $key => $val) { 
     DetailServiceOrder::where('detail_service_id', $request->detail_service_id)-> 
      update(['sales_order_id' = $request->sales_order_id, 
        'service_id' = $input['service_id'][$key], 
        'sales_order_id' = $request->sales_order_id, 
        'order_type' = $input['order_type'][$key], 
        'select_plan' = $input['select_plan'][$key], 
        'qty' = $input['qty'][$key], 
        'unit_price' = $input['unit_price'][$key], 
        'note' = $input['note'][$key] ]);    
    } 

    foreach ($employeedata as $key => $val) { 
     DetailEmployeeOrder::where('detail_employee_id', $request->detail_employee_id)-> 
      update(['sales_order_id' = $request->sales_order_id,       
        'employee_id' = $input['emp_id'][$key], 
        'mandays' = $input['mandays'][$key] ]);     
    } 
} 

詳細についてはthisをご確認ください。

希望します。

+0

これは動作していますが、問題は現在保存されているデータのみであり、 foreachは動作していないようです – rafitio

+0

それは動作するはずです。 'Foreach'は良いと思われるので、このコードのどこに問題があるのですか? – KuKeC

2

クエリがnullを返すかどうかを常に確認する必要があります。 is_nullまたはempty()を使用します。

foreach ($servicedata as $key => $val) { 
    $detailservice = DetailServiceOrder::find($request->detail_service_id); 
    if (!is_null($detailservice)) { 
     $detailservice->sales_order_id = $request->sales_order_id; 
     $detailservice->service_id = $input['service_id'][$key]; 
     $detailservice->order_type = $input['order_type'][$key]; 
     $detailservice->select_plan = $input['select_plan'][$key]; 
     $detailservice->qty = $input['qty'][$key]; 
     $detailservice->unit_price = $input['unit_price'][$key]; 
     $detailservice->note = $input['note'][$key]; 
     $detailservice->save(); 
    } 
} 

foreach ($employeedata as $key => $val) { 
    $detailemployee = DetailEmployeeOrder::find($request->detail_employee_id); 
    if (!is_null($detailemployee)) { 
     $detailemployee->sales_order_id = $request->sales_order_id; 
     $detailemployee->employee_id = $input['emp_id'][$key]; 
     $detailemployee->mandays = $input['mandays'][$key]; 
     $detailemployee->save(); 
    } 
} 
+0

こんにちは、私はあなたの方法に従ってきましたが、それでもエラーです – rafitio

関連する問題