Проблема с фильтром коллекций Исправлено

1

Если делать объединение с таблицей 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",
));

7 комментариев

  • 0

    В последнем обновлении мы добавили alias в метод addJoin(). Посмотрите, достаточно ли это для решения вашей задачи.

    • +1
      Дмитрий Протонин Дмитрий Протонин 29 сентября 2022 17:37 #

      Можем собственно продолжить обсуждение и здесь. К тому же, условие не работает на кол-во товаров, тоже непонятно по какой причине, пример того:

      $collection->addWhere('count > 0');
      // Данная вещь с количеством просто не отрабатывает, проверил на некоторых полях продуктов, всё остальное «Вроде бы работает»
    • +1
      Дмитрий Протонин Дмитрий Протонин 3 октября 2022 12:02 #

      Я так понимаю, ответ придётся ждать долго ? )

    • +1
      Дмитрий Протонин Дмитрий Протонин 3 октября 2022 13:05 #

      Данная вещь также не работает! Прошу разработчиков исправить данные нюансы.. По цене нормально отбирает и всё ок. А с наличием беда! Основной метод нашёл в файле shopProductsCollection.class.php


      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 3 октября 2022 16:57 #

        Поясните подробнее, на что надо обратить внимание в этом комментарии.

        • +1
          Дмитрий Протонин Дмитрий Протонин 3 октября 2022 17:13 #

          'in_stock_only' -> этот параметр я могу явно пробросить с заданным булевым значением для работы с коллекцией продуктов (shopProductsCollection.class.php -> метод (filters() ). При включённом параметре он никак не реагирует и не учитывает только те, которые есть на складе, хотя должен. Поэтому в итоге, отрабатывает только параметр 'price_min'. В данном случае, должно учитывать то, что в коллекция продуктов должна отдавать продукты только в наличии и не менее данного минимального прайса. Надеюсь, что объяснил нормально.. Если вдруг чего - то не поняли, то я с радостью объясню ещё раз в другой формулировке.

          Абсолютно такая же ситуация и с этим методом. Я бы хотел отобрать только те товары, которые есть, относительно моего фильтра. НО даже при таком решении это не работает, хотя к остальным полям продукта «Достучаться» можно.

          Буду очень благодарен, если проблема решится!

          $collection->addWhere('count > 0'); - не работает
        • +1
          Дмитрий Протонин Дмитрий Протонин 29 сентября 2022 12:16 #

          Либо я чего - то не понял. Либо ошибка по прежнему осталась. По прежнему ругается на условие в котором используется alias таблицы с несуществующей колонкой

          Добавить комментарий

          Чтобы добавить комментарий, зарегистрируйтесь или войдите