Я хотел бы отфильтровать коллекцию продуктов, чтобы отображать только те товары, которые есть в наличии. Я подумал, что это будет легко, учитывая наличие атрибута is_salable, который равен 1 (истина), если товар есть в наличии, и 0 (ложь), если нет. Но что бы я ни делал, это не работает. Кроме того, кажется, что выполнение запроса останавливается до его завершения.
Вот пример кода:
$this->_productCollection = Mage::getModel('catalog/product')->getCollection();
$this->_productCollection->addAttributeToSelect('*');
$this->_productCollection->addAttributeToFilter('my_attribute', true);
//So far, so good...filtering on 'my_attribute' works!
Mage::Log("select: " . $this->_productCollection->getSelect());
//Successfully outputs the SQL query
$this->_productCollection->addFieldToFilter('is_salable', '1');
Mage::Log("select: " . $this->_productCollection->getSelect());
//does NOT output any query...it's like it died trying
Так что я делаю неправильно? Я пробовал «addFieldToFilter», «addAttributeToFilter» и разные другие запросы, такие как: addFieldToFilter('is_salable', array('eq' => true))
и т. д.
Кто-нибудь знает, как это сделать? Если «is_salable» не является ответом, все, что мне нужно сделать, это отфильтровать продукты, которых нет на складе... так что все, что работает, будет хорошо :)
Спасибо!
(string)$this->getProductCollection()->getSelect()
- person clockworkgeek   schedule 14.03.2011__toString()
будет автоматически вызываться при объединении со строкой (начиная с PHP 5.2, см. документы) - person apfelbox   schedule 13.03.2014isSalable
, как определено в Mage_Catalog_Model_Product, поэтому ваш комментарий неверен. - person Zain Baloch   schedule 28.04.2017