2012-03-08 58 views
2

我必须加载一系列产品并对它们进行排序以供进一步显示。Magento,排序YES/NO属性

最初收集按日期排序。这工作完美无瑕。现在我不得不为产品添加新的YES/NO属性。这也很好。

我唯一无法解决的是如何通过此属性对我的收藏进行排序。 集合必须按照此新属性以及日期进行排序。

我想这会工作:

$collection->addAttributeToSelect('name'); 

$collection->addAttributeToSelect('YesNoAttr'); 

$collection->addAttributeToSelect('special_to_date'); 

$collection->addAttributeToSelect('short_description'); 

$collection->addAttributeToSelect('image'); 

$collection->addAttributeToSort('YesNoAttr', 'ASC')->addAttributeToSort('special_to_date', 'ASC'); 

$products = $collection->load(); 

事实并非如此。我也试着设置的顺序:

$collection->setOrder('YesNoAttr','ASC'); 

我试图仅通过新属性进行排序,但它也不能工作,所以我敢肯定它有没有关系我试图通过2排序属性。

我想解决这个现在几个小时,我完全不知道我做错了什么。

任何帮助将不胜感激。

+1

FYI:'$收藏 - >负荷(真);'会响应该活动正用于收集查询。 – benmarks 2012-03-08 12:54:46

+0

谢谢你的回复。我输出生成的查询,它只添加日期的ORDER BY部分。我试图删除日期排序,只留下$ collection-> addAttributeToSort('YesNoAttr','ASC')。当我这样做时,整个ORDER BY部分都没有了。我认为YES/NO属性不能以这种方式排序? – itd 2012-03-08 14:00:16

+0

查看'eav_attribute'数据库表并查找属性的“代码” - 验证它是否与作为第一个参数传递给'setOrder()'的内容匹配。 – benmarks 2012-03-08 14:50:28

回答

1

要添加多个属性命令,你可以尝试这样做:

$collection->getSelect()->order('main_table.YesNoAttr asc') 
     ->order('main_table.special_to_date asc');