Я попробовал все эти ответы в различных комбинациях, и мне вернули только небольшое подмножество моего каталога.Причина: я изначально импортировал свои продукты, используя скрипт импорта изображений на заказ.
Если я не указал изображения для некоторых строк во время импорта, сценарий не создал NULL
или пустые значения атрибутов для этих изображений.,Он просто не создавал строки атрибутов вообще.
Поскольку addAttributeToFilter
использует объединение INNER
по умолчанию и не было значения атрибута изображения для присоединения, размещенные здесь запросы не улавливали эти SKU.
Приведенный ниже код возвращает все продукты, для которых изображение, small_image или миниатюра имеют нулевое значение, неправильно отформатировано, или строка полностью отсутствует .
Третий параметр addAttributeToFilter
позволяет вам указать тип объединения, который будет использоваться вместе с предложениями OR
оператора WHERE
.
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(
array(
array(
'attribute' => 'image',
'null' => '1'
),
array(
'attribute' => 'small_image',
'null' => '1'
),
array(
'attribute' => 'thumbnail',
'null' => '1'
),
array(
'attribute' => 'image',
'nlike' => '%/%/%'
),
array(
'attribute' => 'small_image',
'nlike' => '%/%/%'
),
array(
'attribute' => 'thumbnail',
'nlike' => '%/%/%'
)
),
null,
'left'
);
Если, как и я, вы хотитечтобы преобразовать это в запрос SQL для экспорта в виде CSV из вашего клиента SQL, просто распечатайте запрос из сценария PHP:
echo $products->getSelect();
Я видел несколько SQL-запросов, опубликованных в StackOverflow, которые жестко кодируют attribute_id
целых чисел, которые ссылаются на атрибуты image
, small_image
и thumbnail
, но они могут различаться в зависимости от установки.В Magento запросы с ORM намного лучше, чем с SQL.