Php 在限制Laravel中的父项后使用雄辩选择相关项
如果我有一个laravel类,比如Category,它与另一个类(比如Subcategory)有1:many关系,那么我如何查询所有的子类,并对Category类进行限制 例如,查询Category类标题为“TEST”的所有子类别 我试过通过: 我对所有这样做的方法都感兴趣 编辑--两种解决方案:Php 在限制Laravel中的父项后使用雄辩选择相关项,php,laravel,Php,Laravel,如果我有一个laravel类,比如Category,它与另一个类(比如Subcategory)有1:many关系,那么我如何查询所有的子类,并对Category类进行限制 例如,查询Category类标题为“TEST”的所有子类别 我试过通过: 我对所有这样做的方法都感兴趣 编辑--两种解决方案: $data = Category::whereTitle('TEST')->first()->subcategories //or equivalently: $data = Catego
$data = Category::whereTitle('TEST')->first()->subcategories
//or equivalently:
$data = Category::whereTitle('TEST')->get()[0]->subcategories;
或者在子类别中使用@The Alpha的解决方案创建动态范围
public function scopeFromCategory($query, $type)
{
return $query->whereHas('Category', function ($q) use ($type)
{
$q->whereTitle($type);
});
}
// So you can later call
$data = Subcategory::FromCategory('TEST')->get();
您可以尝试以下方法:
$subcategories = Subcategory::whereHas('category', function($query)
{
$query->where('title', 'TEST');
})
->with('Category')
->get();
此代码将返回包含相关
类别的子类别
,但仅当相关类别.标题
为测试
时才返回。还要检查文档。它必须是单个查询还是可以是多个查询?此外,如果您的标准匹配多个类别
,该怎么办?您的查询应该返回所返回的多个类别的所有子类别,还是只有一个类别匹配?无论哪一个真正有效,都是一个或多个查询。理想情况下,它将是一个类似于Category::find(1)->subcategories的单一查询,但更像Category::findTitle('TEST')->subcategories。或者,我个人只匹配一个类别。
public function scopeFromCategory($query, $type)
{
return $query->whereHas('Category', function ($q) use ($type)
{
$q->whereTitle($type);
});
}
// So you can later call
$data = Subcategory::FromCategory('TEST')->get();
$subcategories = Subcategory::whereHas('category', function($query)
{
$query->where('title', 'TEST');
})
->with('Category')
->get();