Выдано 108974 лицензии

How To: Вывод товаров, присутствующих на складе

Ограничения на вывод товаров задаются через метод shopItems() контроллера Shop_Controller_Show, метод возвращает объект Shop_Item_Model с настроенными ограничениями. Дополним их через queryBuilder():

$Shop_Controller_Show->shopItems()
	->queryBuilder()
	->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
	->having('SUM(shop_warehouse_items.count)', '>', 0)
	->groupBy('shop_items.id');

$Shop_Controller_Show->show();

Ограничение с учетом остатков на складе модификаций

Вывод товаров, имеющих остатки на складах, либо товаров, имеющих модификации с остатками на складе.

$Shop_Controller_Show
    ->shopItems()
    ->queryBuilder()
    // Модификации и остатки на складах модификаций
    ->leftJoin(array('shop_items', 'modifications'), 'modifications.modification_id', '=', 'shop_items.id')
    ->leftJoin(array('shop_warehouse_items', 'modifications_shop_warehouse_items'), 'modifications_shop_warehouse_items.shop_item_id', '=', 'modifications.id')
    // Остатки на складах основного отвара
    ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
    // Есть остатки на основном складе
    ->having('SUM(shop_warehouse_items.count)', '>', 0)
    // Или
    ->setOr()
    // Есть остатки на складах у модификаций
    ->having('SUM(modifications_shop_warehouse_items.count)', '>', 0)
    ->groupBy('shop_items.id');

$Shop_Controller_Show->show();