gpt4 book ai didi

php - Magento 产品集合 : Output top 3 products per custom attribute

转载 作者:行者123 更新时间:2023-11-30 00:09:37 26 4
gpt4 key购买 nike

我创建了一个自定义属性“quality_level”,指示三个质量级别:入口、标准、高级。

我现在正在尝试创建类别页面,该页面应完全与分层导航配合使用,仅列出每个质量级别的前 3 个产品(即最多 3x3 产品)。

“前 3 名”的排序基于另一个自定义属性“quality_measure”,该属性定义在 1(最低)和 1000(最佳)之间。

我尝试按如下方式实现它:

$_productCollectionTmp = clone $this;
$_productCollection1 = $_productCollectionTmp
->getProductCollection()
->clear()
->addAttributeToFilter('quality_level', array('in' => array(305)))
->addAttributeToSort('quality_measure', 'DESC')
->load();

$_productCollectionTmp = clone $this;
$_productCollection2 = $_productCollectionTmp
->getProductCollection()
->clear()
->addAttributeToFilter('quality_level', array('in' => array(306)))
->addAttributeToSort('quality_measure', 'DESC')
->load();

...

但是,这不仅感觉效率很低,而且实际上根本没有显示任何产品,因为 addAttributeToFilter 似乎适用于我尝试克隆的所有产品集合。

或者,我考虑了一种更有效的方法,使用附加的 WHERE 子句,类似于这里的示例:http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ (“从每组中选择前 N 行”下的示例)。但是,我不知道如何在我的案例中实现这一点。

我可以通过这样巧妙的陈述得到结果吗?

... ->getSelect()->where("(SELECT count(*) from ...) <= 3") ...

有什么想法或建议吗?

最佳答案

你做得几乎没问题。
问题是,一旦您对集合调用 load ,就会从数据库中检索项目。
之后调用reset将不会再次加载集合。
所以试试这个代码:

$_productCollectionTmp = clone $this;
$_productCollection1 = $_productCollectionTmp
->getProductCollection()
->clear() //not sure if this is needed anymore
->addAttributeToFilter('quality_level', array('in' => array(305)))
->addAttributeToSort('quality_measure', 'DESC')
;

$_productCollectionTmp = clone $this;
$_productCollection2 = $_productCollectionTmp
->getProductCollection()
->clear() //not sure if this is needed anymore
->addAttributeToFilter('quality_level', array('in' => array(306)))
->addAttributeToSort('quality_measure', 'DESC')
;

然后您只需循环 $_productCollection1$_productCollection2 即可。在执行 foreach 循环时,将自动调用 load

关于php - Magento 产品集合 : Output top 3 products per custom attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com