Laravel错误:方法保存不存在
我已经创建了一个用于更新数据到数据库的代码,但是我得到如下所示的错误。当我使用dd()
调试代码时,该值为true。 我的save()
方法有什么问题?Laravel错误:方法保存不存在
BadMethodCallException in Macroable.php line 74: 保存方法不存在。
这是我的控制器
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();
}
}
$detailservice
为空,我认为,你应该检查它是否为空或不
if (! $detailservice) continue;
,但是当我检查使用'DD($ detailservice)'的值不为空 – rafitio
在这里看到此链接: http://*.com/questions/35896756/method-save-does-not-exist-when-saving-laravel-5-2-model –
也许尝试不同的方法?
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] ]);
}
}
在这种情况下你不需要检查记录存在,因为它不使用save()
方法。
如需更多帮助,检查this。
希望它有帮助
你应该经常检查查询是否返回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();
}
}
嗨,我一直在跟踪你的方式,但它仍然是错误的 – rafitio
我的猜测是,'DetailServiceOrder :: find'未发现任何 – apokryfos