เป็นไปได้ไหมที่จะเรียกใช้คิวรีเพื่อค้นหารายการผลิตภัณฑ์ที่ไม่มีภาพกำหนดไว้ โดยหลักการแล้วฉันต้องการให้ SKU พิมพ์ออกมาบนหน้าจอ
เป็นไปได้ไหมที่จะเรียกใช้คิวรีเพื่อค้นหารายการผลิตภัณฑ์ที่ไม่มีภาพกำหนดไว้ โดยหลักการแล้วฉันต้องการให้ SKU พิมพ์ออกมาบนหน้าจอ
คำตอบ:
คุณสามารถค้นหาคอลเลกชันสำหรับรหัสด้านล่าง
$_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' => '%/%/%'
),
));
คุณสามารถรับรายการผลิตภัณฑ์ทั้งหมดที่ไม่มีการกำหนดรูปภาพ
ถ้าคุณต้องการเฉพาะผลิตภัณฑ์ที่ไม่ได้มีimage
, small_image
หรือthumbnail
ที่ได้รับมอบหมายแล้วคำตอบจาก @KeyulShah หรือ @TBIInfotech ที่จะทำให้คุณเพียงแค่ว่า
หากคุณต้องการผลิตภัณฑ์ที่ไม่มีภาพเลยคุณสามารถเรียกใช้คิวรีนี้ในฐานข้อมูลและนำมาใช้ได้
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
หากคุณลบhaving
คำแถลงคุณจะได้ผลลัพธ์ 2 คอลัมน์พร้อมด้วย skus ผลิตภัณฑ์และจำนวนรูปภาพที่กำหนดให้
คุณสามารถส่งออกเป็น csv
เพียงปรับเปลี่ยนเล็กน้อยตามที่ @keyul shah อธิบายไว้เพียงแค่วางโค้ดไว้บน 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();
}
มันใช้งานได้สำหรับฉัน ....
$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'
);
หากใครที่กำลังมองหา Magento 2 มันจะได้ผล มันเหมือนกับ @Marius เพิ่งเพิ่มหนึ่งตาราง
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