È possibile eseguire una query per trovare un elenco di prodotti senza immagini assegnate? Idealmente, vorrei che le SKU fossero stampate sullo schermo.
È possibile eseguire una query per trovare un elenco di prodotti senza immagini assegnate? Idealmente, vorrei che le SKU fossero stampate sullo schermo.
Risposte:
Puoi trovare la raccolta per il codice seguente.
$_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' => '%/%/%'
),
));
puoi ottenere tutto l'elenco dei prodotti che non ha immagini assegnate.
Se vuoi solo i prodotti che non hanno image
, small_image
o thumbnail
assegnati, le risposte di @KeyulShah o @TBIInfotech ti daranno proprio questo.
Se si desidera che i prodotti non contengano immagini, è possibile eseguire questa query sul database e ottenerli.
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
Se si rimuove la having
dichiarazione si otterrà un risultato di 2 colonne con gli skus di prodotto e il numero di immagini assegnate loro.
Puoi semplicemente esportarlo come un CSV.
Solo una piccola modifica a ciò che ha descritto @keyul shah, basta inserire il codice su magento root:
<?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();
}
Questo funziona per me ....
$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'
);
Se qualcuno cerca Magento 2. Funzionerà. È uguale a @Marius appena aggiunto una tabella.
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