Фильтр товаров не работает правильно с тем, где запрос - PullRequest
0 голосов
/ 15 октября 2018

У меня проблема, у меня есть код:

public function attribute()
{
   return $this->hasMany('App\Models\ProductAttribute');
}

public function scopeAttrSearch($query, $ids)
{
   foreach ($ids as $id) {
       $query->whereHas('attribute', function ($q) use ($id) {
           $q->where('attribute_value_id', $id);
       });
}

  return $query;
}

В идентификаторах я отправляю values_attributes_id из базы данных.У меня есть список флажков с именем attribute_value.Если есть список флажков, когда выбранные продукты фильтруются по критериям.но если я выбираю флажки из той же категории, фильтр, который обычно не фильтруется, кажется, что условие «где» не работает должным образом.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вы можете напрямую передать входящий массив в метод whereIn.

public function scopeAttrSearch($query, $ids)
{
   $query->whereHas('attribute', function ($q) use ($ids) {
       $q->whereIn('attribute_value_id', $ids);
   });
   return $query;
}
0 голосов
/ 15 октября 2018

foreach не работает с запросом, вы можете упростить код:

public function scopeAttrSearch($query, $ids)
{
   return $query->whereHas('attribute', function ($q) use ($ids) {
       $q->whereIn('attribute_value_id', $ids);
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...