我有三个型号。类别,产品和变化。一个类别有很多产品,产品有很多变化。我想要做的是获得至少有一种产品至少有一种变化的类别。我已经能够用这段代码做到这一点:
$categories = Category::with(['products', 'products.variants'])
->whereHas('products', function($query) {
$query->whereHas('variants', function() {});
})
->get();
但是,这是棘手的部分,我想排除没有任何变化的产品。如果不排除整个类别,我似乎无法做到这一点。
简而言之。结果集仅包含至少有一个产品至少有一个变体的类别。 (子)产品结果集仅包含至少有一种变体的产品。
很抱歉,如果这很难理解。老实说,我不知道怎么说这么奇怪的具体问题。
答案 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();