Laravel 5.5 find($ id)返回集合而不是单个对象
知道为什么,以及如何防止这种情况?我必须使用->first()
作为解决方法
public function destroy(client $client)
{
$item = Client::findOrFail($client)->first();
$item->delete();
session()->flash('message', 'Client deleted');
return redirect('/clients');
}
答案 0 :(得分:10)
find()
和findOrFail()
需要一个整数来返回一个元素。如果您传递其他内容,您将获得一个集合。
由于您要求将Client
对象作为参数,因此您无需进行检查。当对象不存在时,Laravel永远不会触发此函数,因此您无需检查它。
public function destroy(Client $client)
{
$client->delete();
session()->flash('message', 'Client deleted');
return redirect('/clients');
}
有关详细信息,请阅读https://laravel.com/docs/5.5/eloquent#retrieving-single-models以及not found exception
答案 1 :(得分:1)
$client
已经是Client
的实例。你不应该再“找到”它。检查它是否存在然后运行delete
就足够了。
public function destroy(client $client)
{
if ($client->exists)
$client->delete();
session()->flash('message', 'Client deleted');
return redirect('/clients');
}