Magento定制的条件

时间:2015-03-27 09:14:23

标签: php mysql magento

我有自定义eav属性的自定义集合。我正在尝试创建自定义查询来过滤我的自定义集合。 "其中"我要创建的条件看起来应该如下:

(start_date <= $current_date AND active_to >= $current_date) OR unlimited = 1

有我的代码:

$collection = Mage::getResourceModel('campaigns/campaign_collection')
            ->setStoreId(Mage::app()->getStore()->getId())
            ->addAttributeToSelect('*')
$collection->getSelect()->where(new Zend_Db_Expr("(start_at <= '" . $current_date . "' AND active_to >= '" . $current_date . "') OR unlimited = 1"));

但在这种情况下,我收到的错误是找不到列start_at。

提前致谢

2 个答案:

答案 0 :(得分:0)

尝试使用addFieldToFilter(),如下所示:

$collection = Mage::getResourceModel('campaigns/campaign_collection')
            ->setStoreId(Mage::app()->getStore()->getId())
            ->addAttributeToSelect('*')
            ->addFieldToFilter(array(array('attribute' => 'start_date', 'gteq' => $current_date),array('attribute' => 'unlimited', 'eq' => '1')))
        ->addFieldToFilter(array(array('attribute' => 'active_to', 'lteq' => $current_date),array('attribute' => 'unlimited', 'eq' => '1')));

随后调用该函数两次会使其像“AND”运算符一样运行。 'array('attribute'=&gt;'unlimited','eq'=&gt;'1')'应该是'OR'运算符。

希望它有所帮助。

答案 1 :(得分:-1)

尝试打印您所获得的查询 $收藏 - &GT; printLogQuery(真); 这将允许获取您的集合正在进行的查询,因此您可以直接在数据库中进行验证。希望这有帮助