Ограничить к выборке товары, которых нет в наличии

#
Ограничить к выборке товары, которых нет в наличии
Добрый день, на сайте выбираю товары категории, добавляю их в xml для отображения в карточке, как добавить сюда условие, чтобы выбирались только товары, с наличием на складе.
Пробовал как тут https://www.hostcms.ru/documentation/modules/shop/frontend/show-good-available-in-the-stock/
добавить код, выдает ошибку http://joxi.ru/l2ZERQ8skLzYZm
Мой код
   
$cur_oShop = $Shop_Controller_Show->getEntity();
  $cur_oShopItems = $cur_oShop->Shop_Items;
   $cur_oShopItems->queryBuilder()
     ->where('shop_group_id', '=', $cur_group_cat)
      ->where('deleted', '!=', 1)
      ->where('id', '!=', $cur_item_cat)
      ->where('modification_id', '=', 0)
      ->where('shortcut_id', '=', 0)
      ->where('active', '=', 1)
      ->where('price', '>', 0)
     ->clearOrderBy()
    ->orderBy('RAND()')

    ->limit(30);
    $cur_aShopItems = $cur_oShopItems->findAll();


Пробовал так

$cur_oShop = $Shop_Controller_Show->getEntity();
  $cur_oShopItems = $cur_oShop->Shop_Items;
  $fieldName = count($Shop_Controller_Show->getFilterProperties()) || count($Shop_Controller_Show->getFilterPrices()) || $Shop_Controller_Show->producer
    ? $Shop_Controller_Show->getFilterTableName() . '.shop_item_id'
    : 'shop_items.id';
   $cur_oShopItems->queryBuilder()
   ->join('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', $fieldName)
   ->join('shop_warehouses', 'shop_warehouses.id', '=', 'shop_warehouse_items.shop_warehouse_id')
   ->where('shop_warehouses.active', '=', 1)
   ->where('shop_warehouses.deleted', '=', 0)
   ->having('SUM(shop_warehouse_items.count)', '>', 0)
     ->where('shop_group_id', '=', $cur_group_cat)
      ->where('deleted', '!=', 1)
      ->where('id', '!=', $cur_item_cat)
      ->where('modification_id', '=', 0)
      ->where('shortcut_id', '=', 0)
      ->where('active', '=', 1)
      ->where('price', '>', 0)
     ->clearOrderBy()
    ->orderBy('RAND()')

    ->limit(30);
    $cur_aShopItems = $cur_oShopItems->findAll();
#
Re: Ограничить к выборке товары, которых нет в наличии
Быть может, проще в XSL-шаблоне фильтровать узлы, у которых rest равен нулю?
#
Re: Ограничить к выборке товары, которых нет в наличии
Нет, мне нужно получить 30 товаров, так количество будет плясать от группы к группе
#
Re: Ограничить к выборке товары, которых нет в наличии
А почему именно 30? Сформулируйте задачу от начала и до конца, чтобы было понятнее, пожалуйста.
#
Re: Ограничить к выборке товары, которых нет в наличии
Задача в том чтобы выбрать помимо имеющихся условий ограничения, товары, что присутствуют на складе
#
Re: Re: Ограничить к выборке товары, которых нет в наличии
И это всё равно не проясняет то, что не так. Вариант с фильтрацией узлов в XSL вам не подходит, но вы не говорите, почему товаров должно быть 30.
Ошибка в вашем скриншоте говорит о том, что у вас неточность в условиях оператора WHERE. И в тексте SQL-запроса это тоже видно. Вы не уточняете в запросе, к какой именно таблице относится поле `deleted`.
Если вам нужно просто узнать причину этой ошибки, она в том, что необходимо исправить имена полей в методах where() после having(). А по остальному пока нет понимания.
#
Re: Ограничить к выборке товары, которых нет в наличии
Количество товара это изначально необходимое и постоянное. Почему вы уцепились за это, я вкурсе как ограничить в xsl по наличию, это мне не подходит и это в корне неверно, если что то и ограничивать то на стороне бэкенда, зачем тащить лишние данные
По поводу ошибки, понял, попробую явно указать в where
#
Re: Ограничить к выборке товары, которых нет в наличии
Цитата:
Почему вы уцепились за это

Потому что в вашем исходном сообщении вопрос звучит так:
Цитата:
как добавить сюда условие, чтобы выбирались только товары, с наличием на складе

Чтобы просто отбросить товары, которых нет в наличии, достаточно отфильтровать их в XSL-шаблоне. Но вам этот вариант не подходит. А чтобы предложить вам что-то иное, нужно понимать, чего именно вы хотите добиться.
Если вы сводите задачу к простой формулировке "наличия на складе", то в контроллере Shop_Controller_Show есть метод warehouseMode(), которому можно передать 'in-stock' или 'in-stock-modification'
#
Re: Ограничить к выборке товары, которых нет в наличии
Я разве использую контроллер показа, я через api выбираю товары, посмотрите код. Наш диалог заходит в тупик, спасибо за обратную связь
#
Re: Ограничить к выборке товары, которых нет в наличии
Цитата:
Я разве использую контроллер показа

Простите, но во втором блоке кода вашего же первого сообщения:
Цитата:
$cur_oShop = $Shop_Controller_Show->getEntity();


Если это не контроллер показа, извините.
Авторизация