当前位置: 首页 > 知识库问答 >
问题:

无法对模型对象Laravel调用保存方法

鱼阳伯
2023-03-14

我试图对模型的对象调用save方法来更新数据库中的特定资源,但当我在api url上发送POST请求时,会出现此错误

方法照明\数据库\雄辩\集合::保存不存在。

我也尝试调用更新方法,但同样的错误。

编辑代码:

$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"
            ];

第一行返回响应和正确响应。

我还试图调用deletedestroy方法来删除资源,但它也会给出相同的错误

BadMethodCallException:方法Illumb\Database\Eloquent\Collection::delete不存在。

BadMethodCallException:方法Illumb\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\u id不是表中的主键,因此我不能简单地调用complaint::find($request)-


共有3个答案

沃阳飙
2023-03-14

在你的查询中

$complaint = Complaint::where('complaint_id', $request->input('id'))->get();

它返回关联数组

但是如果你使用

$complaint = Complaint::where('complaint_id', $request->input('id'))->first();

它返回索引数组或数字数组。然后您必须使用$complaint[0]-

於乐语
2023-03-14

用first()代替get()

投诉::其中('complaint_id',$请求-

姚胡媚
2023-03-14

如果您的$complaint是输出的集合。因此,如果您将代码更改为$complaint=complaint::where('complaint\u id',$request),则save对此不起作用-

 类似资料:
  • Spring Mongo模板的updateFirst方法并不总是按照预期更新Mongo Db集合。 如果需要,可以提供更多的信息。

  • 在android中,我很难将对象的ArrayList保存到文件中。我希望能够读取这些对象,并对每个对象调用一个方法来获取它们的一个属性。这是对象类 } 在我的活动中,我接受输入并创建一个新的事务对象。然后将事务对象添加到ArrayList中。我想将ArrayList保存到一个文件中,并能够从其他活动访问ArrayList。在这个不同的活动中,我想访问并调用ArrayList中每个对象的,以创建一个

  • 问题内容: Laravel中是否有回调,例如: 我搜索了但什么也没找到。如果没有这样的东西-实施它的最佳方法是什么? 谢谢! 问题答案: 实际上,Laravel在保存|更新|创建某些模型之前具有真实的回调。检查一下: https://github.com/laravel/laravel/blob/3.0/laravel/database/eloquent/model.php#L362 像保存和保存

  • 如何用额外的列保存多对多映射对象?专列为“审批”。对于多对多注释,我只调用了setUsersDocuments(users),它工作正常...我怎样才能使它工作与额外的列? 文件 用户类 主键 多对多表 正在保存单据 编辑:unsuccessfull保存对象-Document.GetDocumentsForUsers().Add(userDocuments)null. 编辑:错误 null

  • 下面是我要为其创建测试的类和方法: 具体地说,我希望模拟getAnalytics.getAll(),这样它就会返回一个我已经定义的字符串。而不是方法执行它的任务。这是我的代码: