Добрый день, пишу для сайта умный фильтр по аналогии Яндекс.Маркета.
Собственно уже который день озадачился вопросом реализация релятивного фильтра.
Что имеем:
Динамическую форму: (Форма генерируется автоматически, но для наглядности вставил HTML)
CODE ( text):
скопировать код в буфер обмена
<form method="get" action=""> <div> <label>Asus</label> <input type="checkbox" name="filter[]" value="Asus"> <label>Acer</label> <input type="checkbox" name="filter[]" value="Acer"> <label>Lenovo</label> <input type="checkbox" name="filter[]" value="Lenovo"> </div> <div> <label>2015</label> <input type="checkbox" name="filter[]" value="2015"> <label>2014</label> <input type="checkbox" name="filter[]" value="2014"> <label>2013</label> <input type="checkbox" name="filter[]" value="2013"> </div> <button>Искать</button> </form>
После сабмита формы имеется url следующего вида:
Так же имеем таблицы в базе данных:
Сам обработчик выглядит следующим образом (P.S фреймворк Laravel)
CODE ( text):
скопировать код в буфер обмена
Выборка соответствующих фильтров. $filter[] = explode(',', $request->input('filter'); $filters = DB::table('products_to_filter')->whereIn('id', $filter) ->get() ->all(); foreach($filters as $row) {$filterArray[] = $row->product_id;} Выборка продуктов: $products = DB::table('products')->whereIn('id', $filterArray)->get()->all();
Собственно моя проблема заключается в следующем, фильтр работает, но не совсем так как мне нужно, тобишь при фильтрации, он должен результаты уменьшать, а он же наоборот ищет более углубленно, и как следствие увеличивает кол-во результатов. Как решить данную проблему?
|