Php Laravel更新方法不存在
根据文档,我应该能够使用Php Laravel更新方法不存在,php,laravel,eloquent,laravel-eloquent,Php,Laravel,Eloquent,Laravel Eloquent,根据文档,我应该能够使用update()更新记录,但我得到的错误是方法更新不存在 Client::findOrFail($id)->update($request->all()); 知道为什么吗?我认为这是因为您在单个模型对象上使用了查询生成器的方法。无法执行此操作,因为findOrFail方法返回的单个对象与查询生成器的方法无关 这样做:Client::findOrFail($id)->first()->fill($request->all())->save()尝试以下操作: C
update()
更新记录,但我得到的错误是方法更新不存在
Client::findOrFail($id)->update($request->all());
知道为什么吗?我认为这是因为您在单个模型对象上使用了查询生成器的方法。无法执行此操作,因为findOrFail
方法返回的单个对象与查询生成器的方法无关
这样做:Client::findOrFail($id)->first()->fill($request->all())->save()代码>尝试以下操作:
Client::find($id)->update($request->all());
或者,您可以使用:
Client::where('id',$id)->first()->update($request->all());
使用->填充($request->all())->save()方法填充不存在…您可以使用质量分配:您确定您得到了真实的模型对象吗?使用var_dump(Client::findOrFail($id))打印对象的内容编码>并将其发送到此处对象(Illumb\Database\Eloquent\Collection)#186(1){[“项目”:受保护的]=>数组(1){[0]=>对象(应用程序\客户端)#196(26){[“受保护的”:受保护的]=>数组(1){[0]=>字符串(0)”}[“连接:受保护的]=>字符串(6)“sqlite”[“表:受保护的]=>NULL[“primaryKey”:受保护的]=>字符串(2)“id”[“keyType”:受保护的]=>string(3)“int”[“incrementing”]=>bool(true)[“with”:protected]=>array(0){}[“withCount”:protected]=>array(0){}[“perPage”:protected]=>int(15)[“exists”]=>bool(true)[“wasrentlycreated”]=>bool(false)[“attributes”:protected]=>array(5…我明白了。您得到的是一个集合而不是一个对象。不应该是这样,但是,请使用以下方法:Client::findOrFail($id)->first()->……
,因为在这里,当您使用dd(Client::find($id))通过主键调试更新一行时,更新函数对单个对象起作用;要查看您得到的结果,请查看是否正常:集合{#186▼ #项目:数组:1[▼ 0=>客户端{#196▼ #防护:阵列:1[▶] #连接:“sqlite”#表:null#主键:“id”#键类型:“int”+递增:true#带:[]#带计数:[]#每页:15+存在:true+最近创建:false#属性:数组:5[▼ “id”=>“5”“name”=>“Aafasdfasf”“active”=>“Yes”在“=>”2017-09-08 11:13:33”创建“=>”2017-09-08 11:13:33”更新“=>”等。这里是一个集合,它必须是单个对象