Magento addAttributeToFilter不按照我认为应该的方式工作

时间:2011-02-28 18:53:12

标签: php magento

我有一个产品属性,我已将范围设置为网站(因此理论上它在每个定义的网站上都会有所不同。)

但是出于某种原因,当我在addAttributeToFilter()中使用它时,它似乎忽略了它。

让我告诉你我正在使用的代码:

$total_products_obj = Mage::getModel('catalog/product')
  ->getCollection()
  ->addAttributeToSelect('*')
  ->addAttributeToFilter('discontinued', array('neq' => 1) )
  ->addAttributeToFilter('video_url', array('notnull' => '') );

我遇到问题的属性是video_url属性。就像我说它的范围设置为网站,其中已停止是全局属性。

我对网站属性做的并不多,为了让这个属性不被忽略,我还需要做些什么吗?现在我收到所有已停产的产品的集合不等于1。

2 个答案:

答案 0 :(得分:4)

我找到了一个解决方法。使用该方法的数组版本,实际上用于创建“OR”条件。这会生成正确的SQL。

E.g。

->addAttributeToFilter( array( array( 'attribute'=>'video_url', 'notnull' => '' ) ))

它有点难看,但允许你仍然使用平面目录。

答案 1 :(得分:0)

我关闭了使用平面目录产品,它开始按预期工作。