【发布时间】:2020-08-01 18:36:35
【问题描述】:
我正在尝试在模型 Complaints Model 的对象上调用 save 方法来更新数据库中的特定资源,但是当我在 api url 上发送 POST 请求时,它会出现此错误
BadMethodCallException:方法 Illuminate\Database\Eloquent\Collection::save 不存在。
我也尝试调用update 方法但同样的错误。
编辑代码:
$complaint = Complaint::where('complaint_id', $request->input('id'))->get();
$complaint->title = $request->input('Complaint_Subject');
$complaint->description = $request->input('Complaint_Details');
$complaint->address = $request->input('Complaint_Address');
$complaint->update();
return [
'save_status' => "success"
];
第一行是返回响应和正确响应。
与
我也在尝试调用delete 或destroy 方法来删除资源,但它也给出了同样的错误
BadMethodCallException:方法 Illuminate\Database\Eloquent\Collection::delete 不存在。
或
BadMethodCallException:方法 Illuminate\Database\Eloquent\Collection::destroy 不存在。
删除代码:
$complaint = Complaint::where('complaint_id', $request->input('id'))->get();
$complaint->destroy($request->input('id'));
return [
'request_status' => 'success',
'complaint' => $complaint
];
这里也正确返回了响应。
请注意,complaint_id 不是表中的主键,因此我不能简单地调用 Complaint::find($request->input('id')),我必须与此 complaint_id 列值进行交叉检查才能找到资源。我从昨天开始一直在搜索,但找不到任何解决方案。我怎么解决这个问题。谢谢!!!
【问题讨论】:
-
"在模型的对象上" 实际上不是,错误表明这些是
Eloquent\Collection,而不是模型。尝试用->first()替换->get() -
试试我的答案。它会起作用的。
-
是的,它正在工作!!!!谢谢!!!!!!!!!!!!