Php 在限制Laravel中的父项后使用雄辩选择相关项

Php 在限制Laravel中的父项后使用雄辩选择相关项,php,laravel,Php,Laravel,如果我有一个laravel类,比如Category,它与另一个类(比如Subcategory)有1:many关系,那么我如何查询所有的子类,并对Category类进行限制 例如,查询Category类标题为“TEST”的所有子类别 我试过通过: 我对所有这样做的方法都感兴趣 编辑--两种解决方案: $data = Category::whereTitle('TEST')->first()->subcategories //or equivalently: $data = Catego

如果我有一个laravel类,比如Category,它与另一个类(比如Subcategory)有1:many关系,那么我如何查询所有的子类,并对Category类进行限制

例如,查询Category类标题为“TEST”的所有子类别

我试过通过:

我对所有这样做的方法都感兴趣

编辑--两种解决方案:

$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();