Laravel: как проверить наличие товара в каждой категории? - PullRequest
0 голосов
/ 11 марта 2019

Я использую laravel-nestedset , и я могу получить все категории и их потомков с помощью этого кода:

code1:

$categories = $this->traverse(Category::defaultOrder()->get()->toTree(), null);

Для проверки доступности продукта в каждой категории, Я использую этот код:

code2:

if($category ->products()->exists()) {...}

Можно ли объединить эти два кода?

Я хочу Код 1, возвращает только категории, содержащие продукты.

В настоящее время я использую этот код:

код 3:

  $temp = [];
  $categories = $this->traverse(Category::defaultOrder()->get()->toTree(), null);
  foreach($categories as $key=>$value){

      $category = Category::find($key);
      if($category ->products()->exists()){
         $temp[$key] = $value;
      }
  }
  $categories = $temp;

1 Ответ

0 голосов
/ 11 марта 2019

Вам необходимо проверить наличие взаимосвязи в запросе БД:

Category::has('products')->defaultOrder()->get()
...