Как сделать выборку товаров c фильтрацией по связных таблицах при связи многие ко многим?

188
08 сентября 2018, 18:40

Есть таблица с товарами goods. Она связана с таблицей categories (многие ко многим), также с таблицей goods_filter_value (многие ко многим). Как сделать выборку при заданом alias категории и масива фильтров? Сейчас делаю так:

protected function getProducts($alias, $filters = [])
    {
        $products = $this
            ->p_rep
            ->model
            ->select(
                'goods.name', 
                'goods.price',
                'goods.alias',
                'goods.discount_price',
                'goods.isNew', 
                'images.path'
                )
            ->join('images', 'goods.id', '=', 'images.product_id')
            ->join('goods_category', 'goods_category.product_id', '=', 'goods.id')
            ->join('categories', 'goods_category.category_id', '=', 'categories.id');
            if(count($filters) > 0 ){
                $products = $products->join('goods_filter_value', 'goods_filter_value.product_id', '=', 'goods.id')
                    ->join('values_filters', 'goods_filter_value.value_id', '=', 'values_filters.id')
                    ->whereIn('values_filters.id', $filters);
            }
            $products = $products->where('categories.alias', $alias)            
                ->where('images.isMain', 1)
                ->distinct()
                ->orderBy('goods.created_at', 'desc')
                ->paginate(\Config::get('settings.count_products_on_page'), ['goods.*']);
        return $products;
    }

проблема в том что когда я применяю больше фильтров, результатов становится больше а не наоборот +есть проблема с total в пагинации из за distinct

READ ALSO
Могу ли я использовать Wordpress плагины в Laravel?

Могу ли я использовать Wordpress плагины в Laravel?

Хочу использовать плагин для бронирования времени у врача,

178
Вывод значений переменных в php

Вывод значений переменных в php

Проблема заключается в следующемКак видно по коду, который я прикрепил, я спарсил данные с другого сайта и записал их в 2 переменные

183
Проверка пользователя в БД(АВТОРИЗАЦИЯ)

Проверка пользователя в БД(АВТОРИЗАЦИЯ)

Как правильно сформулировать запрос на существование пользователя в таблице?

188
Найти свободно реферала

Найти свободно реферала

есть структура как в таблице на картинке

218