ค้นหาผลิตภัณฑ์ที่ไม่มีรูปภาพ


9

เป็นไปได้ไหมที่จะเรียกใช้คิวรีเพื่อค้นหารายการผลิตภัณฑ์ที่ไม่มีภาพกำหนดไว้ โดยหลักการแล้วฉันต้องการให้ SKU พิมพ์ออกมาบนหน้าจอ

คำตอบ:


16

คุณสามารถค้นหาคอลเลกชันสำหรับรหัสด้านล่าง

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

คุณสามารถรับรายการผลิตภัณฑ์ทั้งหมดที่ไม่มีการกำหนดรูปภาพ


9

ถ้าคุณต้องการเฉพาะผลิตภัณฑ์ที่ไม่ได้มี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


ไม่ว่าโอกาสใดมันจะทำงานใน Magento2!
Amit Singh

อาจเป็นไปได้ แต่ฉันไม่สามารถรับประกันได้
Marius

5

เพียงปรับเปลี่ยนเล็กน้อยตามที่ @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();

}

โซลูชันของคุณใช้งานได้ดีมากฉันได้ให้ upvote แล้ว แต่จะให้คำตอบกับโพสต์ต้นฉบับ
ฟรานซิสคิม

2

มันใช้งานได้สำหรับฉัน ....

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

วิธีนี้ใช้ได้ผลดีกว่าเพราะหากผลิตภัณฑ์ยังไม่ได้รูปภาพอาจมีความสัมพันธ์ของแอตทริบิวต์ไม่ได้และอาจทำงานได้ไม่ถูกต้อง
Beto Castillo

1

หากใครที่กำลังมองหา 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 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.