Temukan Produk tanpa Gambar

9

Apakah mungkin menjalankan kueri untuk menemukan daftar produk tanpa gambar yang ditugaskan padanya? Idealnya saya ingin SKU dicetak di layar.

Francis Kim
sumber

Jawaban:

16

Anda dapat menemukan koleksi untuk kode di bawah ini.

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

Anda bisa mendapatkan semua daftar produk yang tidak memiliki gambar yang ditetapkan.

Keyul Shah
sumber
9

Jika Anda hanya menginginkan produk yang tidak memiliki image, small_imageatau thumbnailditugaskan, maka jawaban dari @KeyulShah atau @TBIInfotech akan memberi Anda hal itu.

Jika Anda ingin produk yang tidak memiliki gambar sama sekali, Anda dapat menjalankan kueri ini di database dan mendapatkannya.

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

Jika Anda menghapus havingpernyataan, Anda akan mendapatkan hasil 2 kolom dengan skus produk dan jumlah gambar yang ditetapkan untuknya.

Anda bisa mengekspornya sebagai csv.

Marius
sumber
Bagaimanapun, apakah ini akan berhasil di Magento2!
Amit Singh
mungkin, tapi saya tidak bisa menjaminnya
Marius
5

Hanya sedikit modifikasi pada apa yang dijelaskan oleh @keyul shah, cukup letakkan kodenya di root 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();

}
TBI Infotech
sumber
Solusi Anda bekerja sangat baik, saya telah memberi Anda upvote tetapi akan memberikan jawaban untuk posting asli.
Francis Kim
2

Ini bekerja untuk saya ....

$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'
    );
Rahul Dadhich
sumber
Ini berfungsi lebih baik, karena jika produk belum gambar, mungkin hubungan atribut tidak ada, dan mungkin tidak akan berfungsi dengan benar.
Beto Castillo
1

Jika ada yang mencari Magento 2. Ini akan berhasil. Sama seperti @Marius yang baru saja menambahkan satu tabel.

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 
Amit Singh
sumber