php - Magento MySQL - "OR"条件为两个 addAttributeToFilter()

标签 php mysql magento conditional-statements

在 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 来尝试这个。
也许第二个条件应该略有不同。

关于php - Magento MySQL - "OR"条件为两个 addAttributeToFilter(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389352/

相关文章:

php - 为部分订单开具发票;总数未更新

php - laravel 5.1 : how can i have two wherePivot in eloquent?

php - 为每个个人资料/帐户添加综合浏览量计数

php - MySQL 检查字符串是否存在并更新或创建

MySQL bigInt 与 JSON 模式整数

php - 从 cookie 投票 5 次

html - bootstrap magento 下拉菜单不起作用

多个多语言网站的 Magento 产品翻译

php - 如何不复制 SQL 表

php - 理解为什么 echo 在 php 类函数中不起作用