我有自定义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。
提前致谢
答案 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(真); 这将允许获取您的集合正在进行的查询,因此您可以直接在数据库中进行验证。希望这有帮助