Trova prodotti senza immagini


9

È possibile eseguire una query per trovare un elenco di prodotti senza immagini assegnate? Idealmente, vorrei che le SKU fossero stampate sullo schermo.

Risposte:


16

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.


9

Se vuoi solo i prodotti che non hanno image, small_imageo thumbnailassegnati, 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 havingdichiarazione 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.


Per caso funzionerà in Magento2!
Amit Singh,

probabilmente, ma non posso garantirlo
Marius

5

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();

}

La tua soluzione ha funzionato alla grande, ti ho dato un voto, ma assegnerò la risposta al post originale.
Francis Kim,

2

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'
    );

Funziona meglio, perché se il prodotto non ha ancora un'immagine, probabilmente la relazione di attributo non esiste e probabilmente non funzionerà correttamente.
Beto Castillo,

1

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 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.