Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день, пишу для сайта умный фильтр по аналогии Яндекс.Маркета. Собственно уже который день озадачился вопросом реализация релятивного фильтра.
Что имеем:
Динамическую форму: (Форма генерируется автоматически, но для наглядности вставил HTML)
<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 следующего вида:
site.com?filter=Asus&filter=2015
Так же имеем таблицы в базе данных:
products (id, title)
products_to_filter (id, product_id, filter_id)
Сам обработчик выглядит следующим образом
Выборка соответствующих фильтров.
$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();
Собственно моя проблема заключается в следующем, фильтр работает, но не совсем так как мне нужно, тобишь при фильтрации, он должен результаты уменьшать, а он же наоборот ищет более углубленно, и как следствие увеличивает кол-во результатов. Как решить данную проблему?
Не в сети
Страницы 1