Сортировка товаров ИМ

#
Сортировка товаров ИМ
Здравствуйте

При выводе списка товаров используется примерно такая сортировка:


    $query_availability_switch = "IF (
        (SELECT SUM(shop_warehouse_items.count)
            FROM shop_warehouse_items
            WHERE (shop_items.id = shop_warehouse_items.shop_item_id OR shop_items.shortcut_id = shop_warehouse_items.shop_item_id)
                AND shop_warehouse_items.shop_warehouse_id = 1) > 0, 1, 0)";
                
    $Shop_Controller_Show->shopItems()
      ->queryBuilder()
      ->select(array(Core_QueryBuilder::expression($query_availability_switch), 'item_availability'));
    
    $Shop_Controller_Show->shopItems()->queryBuilder()
      ->clearOrderBy()
      ->orderBy('item_availability', 'DESC')
      ->orderBy('sorting', 'ASC')
      ->orderBy('name', 'ASC');


Но при этом выдает ошибку
Exception: Could not execute Shop_Item_Model::__construct()
.
С самой ошибкой понятно - поля item_availability нет таблице и нет в модели, поэтому и ошибка.

Как добавить такое поле к модели?


Модератор
#
Re: Сортировка товаров ИМ
dyll,
создать свою модель, порожденную от Shop_Item_Model, в ней в конструкторе добавить в список доступных полей нужное поле и вызвать родительский конструктор. Кроме того нужно явно указать имя модели, пример посмотрите у Shop_Group_Property_List_Model
Модератор
#
Re: Сортировка товаров ИМ
А вот с ошибкой не все ясно, стек вызова для Exception: Could not execute Shop_Item_Model::__construct() покажите.
#
Re: Сортировка товаров ИМ
Спасибо. Надеялся что будет способ попроще.

По Exception - это все что есть. Стек не выводится. Сам искал где он бросается - не нашел.
У техподдержки есть доступы - могут посмотреть.
Авторизация