Функция WhereIn laravel

170
10 декабря 2016, 10:08

Имеется таблица:

filters_to_products
Структура:
id
category_id
product_id
filter_id

Имеется форма

<form method="get">
  <input type="checkbox" value="1" name="array[]">
  <input type="checkbox" value="2" name="array[]">
  <input type="checkbox" value="3" name="array[]">
  <input type="checkbox" value="4" name="array[]">
  <button>Filter</button>
</form>

P.S инпуты динамические.

Имеется контроллер:

    foreach($request->input('array') as $row) {  
      $ids = $row;
    }
    $items = Item::where('category_id', '1')->whereIn('id', $ids)->get()->all();

Беда в том, что фильтр должен отсеивать значения, к примеру если я выбрал чекбокс с value 1 и чекбокс с value 2 то мне должны вывестись только те item-ы которые есть в таблице по совпадению, а тут получается что у меня выборка происходит по тем которые имеют такой id, то есть грубо говоря позиции не фильтруются, а суммируются на основе фильтров.

Answer 1

Вам нужна функция where() ?
Items::where(cpu, 'i7')->where(diagonal, 13)->where(category, 'Notebook')->get();

UPD

Тогда так

 $items = Item::where('category_id', '1')
 foreach($request->input('array') as $row) {  
  $items->where('id', row)
 }
 $items->get();

Должно сработать на основе особенностей Eloquent-а, когда запрос не заканчивается, пока не выполнен get(). Ну или можно менее извращенно сделать через whereRaw, как больше нравится.

Answer 2

Проще всего, сразу сделать так:

$item = Item::where('category_id', '1')->whereIn('id', array_filter(request()->array))->get();
READ ALSO
Как в FPDF сделать перенос строки в ячейке таблицы?

Как в FPDF сделать перенос строки в ячейке таблицы?

Нужно создать обычную таблицу, я делаю так:

434
Достаточно ли фильтрации для Mysqli

Достаточно ли фильтрации для Mysqli

ЗдравствуйтеДостаточно ли использовать данный вариант фильтрации перед записью в базу данных (менять на мнемонический код )?

165
Uncaught Error в плагине Wordpress

Uncaught Error в плагине Wordpress

Пытаюсь написать плагин и при его активации выдает вот такое сообщение

253