Проверить настройки Skip to content

Фильтр Magento коллекции товаров по наличию на складе

Как отфильтровать коллекцию товаров по наличию?

Есть несколько способов фильтра по наличию товаров в Magento. Ниже 3 примера, как отфильтровать коллекцию по наличию товара на складе.

Пример 1

$products = Mage::getModel('catalog/product')->getCollection();
$products->joinField(
'qty',
'cataloginventory/stock_item',
'qty',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left');
$products->addAttributeToFilter('qty', array('gt' => 0));

Фильтр по наличию «Qty» значению количества товара на складею Но в этом примере нет фильтра по статусу товара на складе «In stock«, «Out of stock«. Для этого потребуется дополнительно делать joinField для поля is_in_stock.

Ниже пример для joinTable.

 

Пример 2

$products = Mage::getModel('catalog/product')->getCollection();
$products->joinTable(
'cataloginventory/stock_item', 
'product_id=entity_id',
array('qty'=>'qty', 'is_in_stock' => 'is_in_stock'),
'',
'left');
$products->addAttributeToFilter('qty', array('gt' => 0));
$products->addAttributeToFilter('is_in_stock', array('eq' => 0));

Присоединяем к выборке данных таблицу «cataloginventory/stock_item» и указываем какие поля надо добавить array(‘qty’=>’qty’, ‘is_in_stock’ => ‘is_in_stock’). И добавим фильтр по атрибутах.

 

Пример 3

$products = Mage::getModel('catalog/product')->getCollection();
Mage::getSingleton('cataloginventory/stock')
->addInStockFilterToCollection($products);

В этом примере фильтр коллекции Magento добавлен используя Magento-way (по правильному :) ). Будет фильтр как по Qty (количеству), так и по Status (статусу товара на складе).

 

 

 

Magento 1.*