在 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 )
);
?>
在上面的查询中,我需要在最后两个过滤器之间使用“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 )
你能帮忙吗?谢谢!
如果我没记错的话,你需要使用一组条件来创建一个 OR。
查看this link理解我的意思。
在您的情况下,您应该像这样将两个条件合二为一
$productCollection->addAttributeToFilter(
array(
array('attribute'=>'special_price', 'eq'=>''),
array('attribute'=>'special_to_date', 'date' => true, 'to' => $dateYesterday )
)
);
我没有安装 Magento 来尝试这个。
也许第二个条件应该略有不同。
我是一名优秀的程序员,十分优秀!