0

Magento では、特定のカテゴリ内で特別価格なしで製品を入手する必要があります。

これが私が思いついたものです:

<?php
$dateYesterday = date( 'm/d/y', mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - 1, date( 'y' ) ) );

$catagoryModel = Mage::getModel( 'catalog/category' )->load( $currentCategoryId );

$productCollection = Mage::getResourceModel( 'catalog/product_collection' );

$productCollection->addAttributeToSelect( 'name' );

$productCollection->addCategoryFilter( $catagoryModel );

$productCollection->addAttributeToFilter( 'special_price', 
    array( 'eq' => '' ) 
);

$productCollection->addAttributeToFilter( 'special_to_date', 
    array( 'date' => true, 'to' => $dateYesterday ) 
);

?>

上記のクエリでは、意味的には次のように、最後の 2 つのフィルターの間に「OR」条件を使用する必要があります。

$productCollection->addAttributeToFilter( 'special_price', 
array( 'eq' => '' ) );

// OR

$productCollection->addAttributeToFilter( 'special_to_date', 
array( 'date' => true, 'to' => $dateYesterday ) );

言い換えると:

( special_price = '' OR special_to_date <= $dateYesterday )

手伝ってくれますか?ありがとう!

4

2 に答える 2

3

よく覚えているなら、ORを作成するには一連の条件を使用する必要があります。私が何を意味するかを理解するためにこのリンク
を チェックしてください。 あなたの場合、あなたはこのようにあなたの2つの条件を1つに結合するべきです

$productCollection->addAttributeToFilter(
                array(
                    array('attribute'=>'special_price', 'eq'=>''),
                    array('attribute'=>'special_to_date', 'date' => true, 'to' => $dateYesterday )
                )
            );

これを試すためのMagentoのインストールはありません。
たぶん、2番目の条件は少し異なるはずです。

于 2013-01-17T22:40:43.010 に答える
1

こちらをご覧ください (Magento コレクションの使用に関する公式ドキュメント)

http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/using_collections_in_magento

あなたの例では:

$productCollection->addAttributeToFilter(array(
    array(
        'attribute' => 'special_price',
        'eq'        => '',
        ),
    array(
        'attribute' => 'special_to_date',
        'date' => true,
        'to'      => $dateYesterday,
        ),
));
于 2013-01-17T22:41:43.697 に答える