이미지가없는 제품 찾기


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명령문 을 제거하면 제품 skus 및 여기에 지정된 이미지 수와 함께 2 열 결과가 표시됩니다.

그냥 CSV로 내보낼 수 있습니다.


우연히 Magento2에서도 작동합니까!
Amit Singh

아마, 그러나 나는 그것을 보증 할 수 없다
Marius

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();

}

귀하의 솔루션이 훌륭하게 작동했습니다. 공감대를 주었지만 원래 게시물에 대한 답변을 수여합니다.
Francis Kim

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.