2015-12-19 63 views
0

我有三种模式。类别,产品和变体。一个类别有很多产品,一个产品有很多变化。我想要做的是获得至少有一种产品至少有一种变化的类别。我已经能够做到这一点与此代码:Laravel/Eloquent包含关系

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

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

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

对不起,如果这很难理解。我真的不知道如何说出这样一个奇怪的具体问题。

回答

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