Buscar productos sin imágenes


9

¿Es posible ejecutar una consulta para encontrar una lista de productos sin imágenes asignadas? Idealmente, me gustaría que los SKU se impriman en la pantalla.

Respuestas:


16

Puede encontrar la colección para el siguiente código.

$_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' => '%/%/%'
        ),
    ));

puede obtener toda la lista de productos que no tiene asignación de imágenes.


9

Si desea que sólo los productos que no tienen image, small_imageo thumbnailasignados a continuación las respuestas de @KeyulShah o @TBIInfotech le dará exactamente eso.

Si desea los productos que no tienen imágenes, puede ejecutar esta consulta en la base de datos y obtenerlos.

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

Si elimina la havingdeclaración, obtendrá un resultado de 2 columnas con los skus del producto y el número de imágenes asignadas a ellos.

Puede exportar eso como un csv.


¡Por casualidad funcionará en Magento2!
Amit Singh el

probablemente, pero no puedo garantizarlo
Marius

5

Solo una pequeña modificación a lo que @keyul shah describió, solo ponga el código en la raíz de 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();

}

Su solución funcionó muy bien, le di un voto positivo, pero otorgaré la respuesta a la publicación original.
Francis Kim

2

Esto funciona para mi ...

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

Esto funciona mejor, porque si el producto aún no tiene imagen, probablemente la relación de atributo no existe, y probablemente no funcionará correctamente.
Beto Castillo el

1

Si alguien busca Magento 2. Esto funcionará. Es lo mismo que @Marius acaba de agregar una tabla.

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 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.