2015-12-19 36 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();