【问题标题】:Laravel Error : Method save does not existLaravel 错误:方法保存不存在
【发布时间】:2016-12-14 09:07:35
【问题描述】:

我已经创建了一个用于将数据更新到数据库的代码,但我收到了如下错误。当我使用dd() 调试代码时,该值为真。 我的save() 方法有什么问题?

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();
    }
}

【问题讨论】:

  • 我猜DetailServiceOrder::find 没有找到任何东西

标签: php laravel


【解决方案1】:

您应该始终检查查询是否返回 null。使用is_nullempty()

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();
    }
}

【讨论】:

  • 嗨,我一直在按照你的方式,但它仍然是错误的
【解决方案2】:

也许尝试不同的方法?

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

希望对你有帮助

【讨论】:

  • 它正在工作,但现在的问题是保存的数据只有最后一个数据,foreach 似乎不起作用
  • 它应该可以工作。 Foreach 看起来不错,所以我不明白这段代码哪里出了问题?
【解决方案3】:

$detailservice 我认为是空的,你应该检查它是否为空

if ( ! $detailservice) continue;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 2017-07-11
  • 2018-09-15
  • 2019-11-17
  • 1970-01-01
相关资源
最近更新 更多