2015-12-19 4 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(); 
Смежные вопросы