在进行查询后,如何通过 where 子句从 Collection 中获取选定的模型
How can I obtain a chosen Model by the where clause from Collection after the query has been proceeded
拿到合集后,我们可以通过以下方式搜索:
$categories->where('name', $name)
这很简单,但是如果我们有一个多级类别系统并且我们想通过给定的名称找到一个模型并且我们知道该模型存在于某处,但我们不确定它是第一级还是更深.
我尝试
$categories->where('name', $name)->orHas('children', function() (...))
但这只能在Builder中使用,不能在集合中使用。
所以问题是,如何通过给定的键和字段从父子集合中检索模型而不再次查询数据库。
当然是Laravel。
使用集合的filter
方法:
$filtered = $categories->filter(function ($category) use ($name) {
return $category->name == $name || $category->children->contains('name', $name);
});
拿到合集后,我们可以通过以下方式搜索:
$categories->where('name', $name)
这很简单,但是如果我们有一个多级类别系统并且我们想通过给定的名称找到一个模型并且我们知道该模型存在于某处,但我们不确定它是第一级还是更深.
我尝试
$categories->where('name', $name)->orHas('children', function() (...))
但这只能在Builder中使用,不能在集合中使用。 所以问题是,如何通过给定的键和字段从父子集合中检索模型而不再次查询数据库。
当然是Laravel。
使用集合的filter
方法:
$filtered = $categories->filter(function ($category) use ($name) {
return $category->name == $name || $category->children->contains('name', $name);
});