画像のない製品を探す


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

ない製品のみが必要な場合imagesmall_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ステートメントと、製品のskusとそれに割り当てられた画像の数が2列の結果になります。

これをcsvとしてエクスポートできます。


万が一Magento2で動作しますか?
アミットシン2018年

たぶん、でも私は保証できません
マリウス

5

@keyul shahの説明を少し変更して、コードを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();

}

あなたの解決策はうまくいきました、私はあなたに賛成票を与えましたが、元の投稿への回答を授与します。
フランシスキム

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と同じですが、1つのテーブルを追加しました。

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.