Laravel / Eloquent包括关系

时间:2015-12-19 03:54:14

标签: php sql laravel orm eloquent

我有三个型号。类别,产品和变化。一个类别有很多产品,产品有很多变化。我想要做的是获得至少有一种产品至少有一种变化的类别。我已经能够用这段代码做到这一点:

$categories = Category::with(['products', 'products.variants'])
        ->whereHas('products', function($query) {
            $query->whereHas('variants', function() {});
        })
        ->get();

但是,这是棘手的部分,我想排除没有任何变化的产品。如果不排除整个类别,我似乎无法做到这一点。

简而言之。结果集仅包含至少有一个产品至少有一个变体的类别。 (子)产品结果集仅包含至少有一种变体的产品。

很抱歉,如果这很难理解。老实说,我不知道怎么说这么奇怪的具体问题。

1 个答案:

答案 0 :(得分:0)

根据这个答案https://stackoverflow.com/a/19921418/5465657

计算出来

我的工作代码

$categories = Category::with(['products' => function($query) {
        $query->whereHas('variants', function() {});
    }, 'products.variants'])
        ->whereHas('products', function($query) {
            $query->whereHas('variants', function() {});
        })
        ->get();