Encontre produtos sem imagens


9

É possível executar uma consulta para encontrar uma lista de produtos sem imagens atribuídas a eles? Idealmente, eu gostaria que os SKUs fossem impressos na tela.

Respostas:


16

Você pode encontrar a coleção do código abaixo.

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

você pode obter toda a lista de produtos que não possui Imagens atribuídas.


9

Se você quiser apenas os produtos que não têm image, small_imageou thumbnailatribuídos, em seguida, as respostas de @KeyulShah ou @TBIInfotech vai lhe dar apenas isso.

Se você deseja os produtos que não têm imagens, execute essa consulta no banco de dados e obtenha-os.

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 você remover a havinginstrução, obterá um resultado de 2 colunas com o skus do produto e o número de imagens atribuídas a eles.

Você pode apenas exportar isso como um CSV.


Por acaso Funcionará no Magento2!
Amit Singh

Provavelmente, mas eu não posso garantir isso
Marius

5

Apenas uma pequena modificação no que o @keyul shah descreveu, basta colocar o código na raiz do 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();

}

Sua solução funcionou muito bem, eu te dei um voto positivo, mas atribuirei a resposta à postagem original.
Francis Kim

2

Isso funciona para mim ....

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

Isso funciona melhor, porque se o produto ainda não possui imagem, provavelmente a relação de atributo não existe e provavelmente não funcionará corretamente.
Beto Castillo

1

Se alguém procurando por Magento 2. Isso vai funcionar. É o mesmo que @Marius acabou de adicionar uma tabela.

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 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.