Если делать объединение с таблицей shop_product_stocks то выдает ошибку: Query Error 1054: Unknown column 'ps1.id' in 'field list'
Query: SELECT p.*,p.id,GROUP_CONCAT(DISTINCT ps1.id) AS sku_ids
FROM shop_product p
JOIN shop_product_stocks ps1
ON p.id = ps1.product_id
JOIN shop_category_products cp1
ON p.id = cp1.product_id
WHERE ps1.stock_id = '5'
AND p.status = 1
AND cp1.category_id = 348
GROUP BY p.id
ORDER BY cp1.sort ASC
LIMIT 30
Соответственно в классе /wa-apps/shop/lib/classes/shopProductsCollection.class.php в методе addJoin либо добавить возможность задавать собственный alias для таблицы, либо поправить, что бы эта таблица не попадала под условия добавления GROUP_CONCAT(DISTINCT ps1.id)
$collection->addJoin(array(
'type' => '',
'table' => 'shop_product_stocks',
'on' => "p.id = :table.product_id and :table.stock_id = '5'",
'where' => ":table.count > 0",
));
8 комментариев
В последнем обновлении мы добавили alias в метод addJoin(). Посмотрите, достаточно ли это для решения вашей задачи.
Можем собственно продолжить обсуждение и здесь. К тому же, условие не работает на кол-во товаров, тоже непонятно по какой причине, пример того:
$collection->addWhere('count > 0'); // Данная вещь с количеством просто не отрабатывает, проверил на некоторых полях продуктов, всё остальное «Вроде бы работает»
Мы выпустили обновление Shop-Script, в котором исправили дополнительную фильтрацию товаров плагинами с помощью метода shopProductsCollection->addWhere() в результатах поиска. Обновление можно установить в «Инсталлере».
Проверьте, пожалуйста. Сообщите нам, если проблема сохранилась.
Спасибо вам за то, что помогаете улучшать программные продукты Webasyst!
Я так понимаю, ответ придётся ждать долго ? )
Данная вещь также не работает! Прошу разработчиков исправить данные нюансы.. По цене нормально отбирает и всё ок. А с наличием беда! Основной метод нашёл в файле shopProductsCollection.class.php
Поясните подробнее, на что надо обратить внимание в этом комментарии.
'in_stock_only' -> этот параметр я могу явно пробросить с заданным булевым значением для работы с коллекцией продуктов (shopProductsCollection.class.php -> метод (filters() ). При включённом параметре он никак не реагирует и не учитывает только те, которые есть на складе, хотя должен. Поэтому в итоге, отрабатывает только параметр 'price_min'. В данном случае, должно учитывать то, что в коллекция продуктов должна отдавать продукты только в наличии и не менее данного минимального прайса. Надеюсь, что объяснил нормально.. Если вдруг чего - то не поняли, то я с радостью объясню ещё раз в другой формулировке.
Абсолютно такая же ситуация и с этим методом. Я бы хотел отобрать только те товары, которые есть, относительно моего фильтра. НО даже при таком решении это не работает, хотя к остальным полям продукта «Достучаться» можно.
Буду очень благодарен, если проблема решится!
$collection->addWhere('count > 0'); - не работаетЛибо я чего - то не понял. Либо ошибка по прежнему осталась. По прежнему ругается на условие в котором используется alias таблицы с несуществующей колонкой