Я хотел бы отфильтровать коллекцию продуктов по изображению, но не нулевым. Самый простой способ - это методы, упомянутые 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
Благодарности
Я обновил этот вопрос, добавив, что такое запрос должен выглядеть, но я не понимаю, как его построить ... – PauGNU
Обновлен мой ответ соответственно – blmage
Спасибо! Это похоже на работу! Я думаю, что все еще есть некоторые детали, но теперь я могу получить коллекцию, которая в основном то, что мне нужно. – PauGNU