laravel - BadMethodCallException:Laravel 中不存在方法 Illuminate\Database\Eloquent\Collection::update
问题描述
我在 Laravel-5.8 中有这个更新控制器
$leavetype = HrLeaveType::findOrFail($id);
$leavetype->leave_type_name = $request->leave_type_name;
$leavetype->leave_type_code = $request->leave_type_code;
$leavetype->description = $request->description;
$leavetype->company_id = Auth::user()->company_id;
$leavetype->created_by = Auth::user()->id;
$leavetype->created_at = date("Y-m-d H:i:s");
$leavetype->is_active = 1;
$leavetype->save();
$employeetypes = HrLeaveTypeDetail::where('leave_type_id', $id)->get();
foreach ($employeetypes as $key => $employeetypes){
$leavetypedetail = HrLeaveTypeDetail::where('leave_type_id', $id)->get();
$insert_array = [
'no_of_days' => $request->no_of_days[$key],
'employee_type_id' => $request->employee_type_id[$key], //$request->employee_type_id[$key],
'weekend_inclusive' => isset($request["weekend_inclusive$key"]) ? 1: 0,
'leave_type_id' => $leavetype->id,
];
$leavetypedetail->update($insert_array);
}
看法
@foreach($leavetypedetails as $key => $leavetypedetail)
<tr>
<td width="5%">
{{$key+1}}
</td>
<td width="30%">
<span>{{$leavetypedetail->employeetype->employee_type_name}}</span>
</td>
<td style="display: none">
<input type="hidden" name="employee_type_id[]" value="{{$leavetypedetail->employeetype->employee_type_name}}" class="form-control employee_type_id">
</td>
<td width="20%"><input type="number" name="no_of_days[]" value="{{$leavetypedetail->no_of_days}}" placeholder="Enter leave days here" class="form-control no_of_days" max="120">
</td>
<td width="10%"><input type="checkbox" name="weekend_inclusive{{$key}}" class="form-control" data-bootstrap-switch data-off-color="danger" data-on-color="success" data-off-text="NO" data-on-text="YES" value="1" {{ ($leavetypedetail->weekend_inclusive == 1 ? ' checked' : '') }}></td>
</tr>
@endforeach
当我提交表单时,我收到了这个错误:
BadMethodCallException: 方法 Illuminate\Database\Eloquent\Collection::update 不存在 app\Http\Controllers\Leave\LeaveTypesController.php(268): Illuminate\Support\Collection->__call('update', Array)
它指向这里:
$leavetypedetail->update($insert_array);
我该如何解决?
谢谢
解决方案
$leavetypedetail = HrLeaveTypeDetail::where('leave_type_id', $id)->get();
因为您使用的是 'get()' .... $leavetypedetail 现在是一个集合,而不是查询构建器的实例,并且该集合没有更新方法
你可以替换:
$leavetypedetail->update($insert_array);
和:
HrLeaveTypeDetail::where('leave_type_id', $id)->->update($insert_array);
推荐阅读
- java - Java Mail Api 发送电子邮件失败
- android - 如何在 widnows 10 中运行 react native 应用程序?
- xcode - Xcode 控制台是黑色的
- android - 如何在颤动中获取当前路线名称?
- django - 如何实现多个过滤器?
- python - 在二叉搜索树中查找父节点
- haskell - 如何使用类型同义词重载运算符?
- ios - 重定向 URL 回调在 SFSafariviewcontroller 中不起作用
- javascript - 从 php 发送多个 SKU 和数量以进行条带化
- django - 一对多关系,如何将数据添加到一对多关系字段?