Apakah mungkin menjalankan kueri untuk menemukan daftar produk tanpa gambar yang ditugaskan padanya? Idealnya saya ingin SKU dicetak di layar.
Apakah mungkin menjalankan kueri untuk menemukan daftar produk tanpa gambar yang ditugaskan padanya? Idealnya saya ingin SKU dicetak di layar.
Jawaban:
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.
Jika Anda hanya menginginkan produk yang tidak memiliki image
, small_image
atau thumbnail
ditugaskan, 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 having
pernyataan, Anda akan mendapatkan hasil 2 kolom dengan skus produk dan jumlah gambar yang ditetapkan untuknya.
Anda bisa mengekspornya sebagai csv.
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();
}
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'
);
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