Майже всі моделі Magento мають відповідний об'єкт Collection, який можна використовувати для отримання декількох екземплярів Моделі.
Щоб створити екземпляр колекції Product, виконайте наступне
$collection = Mage::getModel('catalog/product')->getCollection();
Продукти є моделлю стилю Magento EAV, тому вам потрібно буде додати будь-які додаткові атрибути, які ви хочете повернути.
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
Існує кілька синтаксисів для встановлення фільтрів для колекцій. Я завжди використовую детальний наведений нижче, але, можливо, ви захочете перевірити джерело Magento на наявність додаткових способів використання методів фільтрації.
Далі показано, як фільтрувати за діапазоном значень (більше І менше ніж)
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
$collection->addFieldToFilter(array(
array('attribute'=>'orig_price','gt'=>'100'),
));
$collection->addFieldToFilter(array(
array('attribute'=>'orig_price','lt'=>'130'),
));
Хоча це буде фільтруватися за іменем, яке дорівнює одному чи АБО іншому.
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
$collection->addFieldToFilter(array(
array('attribute'=>'name','eq'=>'Widget A'),
array('attribute'=>'name','eq'=>'Widget B'),
));
Повний список підтримуваних коротких умов (eq, lt тощо) можна знайти в _getConditionSql
методі вlib/Varien/Data/Collection/Db.php
Нарешті, всі колекції Magento можуть бути повторені (базовий клас колекції реалізований на інтерфейсах ітератора). Ось так ви захопите свої товари, коли встановите фільтри.
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
$collection->addFieldToFilter(array(
array('attribute'=>'name','eq'=>'Widget A'),
array('attribute'=>'name','eq'=>'Widget B'),
));
foreach ($collection as $product) {
var_dump($product->getData());
}