Чи можливо запустити запит, щоб знайти список продуктів, не призначених їм зображень? В ідеалі хотілося б, щоб на екрані були надруковані артикули.
Чи можливо запустити запит, щоб знайти список продуктів, не призначених їм зображень? В ідеалі хотілося б, щоб на екрані були надруковані артикули.
Відповіді:
Ви можете знайти колекцію для наведеного нижче коду.
$_products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->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' => '%/%/%'
),
));
Ви можете отримати весь список продуктів, якому немає призначення зображень.
Якщо ви хочете лише ті продукти, яких немає image
, small_image
або thumbnail
призначені, то відповіді від @KeyulShah або @TBIInfotech дадуть вам саме це.
Якщо ви хочете, щоб продукти, які взагалі не мають зображень, можете запустити цей запит у базі даних та отримати їх.
SELECT
e.sku, COUNT(m.value) as cnt
FROM
catalog_product_entity e
LEFT JOIN catalog_product_entity_media_gallery m
ON e.entity_id = m.entity_id
GROUP BY
e.entity_id
HAVING
cnt = 0
Якщо ви вилучите having
оператор, ви отримаєте результат у 2 стовпчику зі скисом продукту та кількістю присвоєних їм зображень.
Ви можете просто експортувати це як csv.
Просто невелика модифікація описаного @keyul shah, просто покладіть код на корінь magento:
<?php
require 'app/Mage.php';
Mage::app();
$_products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->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' => '%/%/%'
),
));
foreach($_products as $_product){
echo $_product->getSku();
}
Це працює для мене….
$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'
);
Якщо хтось шукає Magento 2. Це спрацює. Це те саме, що і @Marius тільки що додав одну таблицю.
SELECT
e.sku, COUNT(m.value) as cnt
FROM catalog_product_entity e
LEFT JOIN catalog_product_entity_media_gallery_value_to_entity r
ON e.entity_id = r.entity_id
LEFT JOIN catalog_product_entity_media_gallery m
ON r.value_id = m.value_id
GROUP BY
e.entity_id
HAVING
cnt = 0