2013-06-03 4 views
1

Я хотел бы отфильтровать коллекцию продуктов по изображению, но не нулевым. Самый простой способ - это методы, упомянутые here, но это не работает: возвращенная коллекция не имеет элементов.Magento: Получать продукты без изображений с помощью коллекций

Я думаю, что проблема заключается в том, что продукты, у которых никогда не было изображения, не имеют отношения между таблицами продуктов/медиа_галереи. Как следствие, когда Magento пытается фильтровать все эти условия, возвращаемая коллекция пуста. Он не учитывает, что это может быть не какая-либо связь между вовлеченными таблицами.

$collection->addAttributeToFilter(array(
     array (
      'attribute' => 'image', 
      'like' => 'no_selection' 
     ), 
     array (
      'attribute' => 'image', // null fields 
      'null' => true 
     ), 
     array (
      'attribute' => 'image', // empty, but not null 
      'eq' => '' 
     ), 
     array (
      'attribute' => 'image', // check for information that doesn't conform to Magento's formatting 
      'nlike' => '%/%/%' 
     ), 
    )); 

Я думаю, я должен использовать условие joinLeft, но я не знаю, как это должно быть. Может ли кто-нибудь помочь мне в этом?

Я нашел very interesting query, который должен сделать трюк. Но мне нужно, чтобы применить это к моей коллекции:

SELECT * 
FROM `catalog_product_entity` AS a 
LEFT JOIN `catalog_product_entity_media_gallery` AS b ON a.entity_id = b.entity_id 
WHERE b.value IS NULL 

Благодарности

ответ

3

Чтобы применить запрос к вашей коллекции продуктов, вы можете использовать

$collection->getSelect() 
    ->joinLeft(
     array('_gallery_table' => $collection->getTable('catalog/product_attribute_media_gallery')), 
     'e.entity_id = _gallery_table.entity_id', 
     array() 
    ) 
    ->where('_gallery_table.value IS NULL'); 
+0

Я обновил этот вопрос, добавив, что такое запрос должен выглядеть, но я не понимаю, как его построить ... – PauGNU

+0

Обновлен мой ответ соответственно – blmage

+0

Спасибо! Это похоже на работу! Я думаю, что все еще есть некоторые детали, но теперь я могу получить коллекцию, которая в основном то, что мне нужно. – PauGNU

Смежные вопросы