不幸的是,我目前没有办法测试这段代码,但想问问社区结果会是什么,以及幕后执行的操作顺序。这是一个简短的 PHP 代码,用于为前端打乱和加载(不确定操作顺序)产品。(A和B是本文参考的标签)
A. $productCollection = Mage::getModel('catalog/product')->getCollection()
->setPageSize(10)
->addAttributeToSort('entity_id', 'DESC');
B. if ($sortType == 'shuffle') {
$productCollection->getSelect()->order(new Zend_Db_Expr('RAND()'));
}
我的问题是,这是否会设置SELECT
查询A.
并将订单随机化附加到查询字符串B.
并运行查询B.
,从而导致以随机订单加载相同的 10 个产品?
我问的原因是,在我们网站上运行的以下(简化)代码中,它总是以随机顺序加载 10 个不同的项目。从代码运行的顺序来看,在我看来,正如我上面所描述的那样。请注意,$productCollection
在此之后可以迭代,因为项目已经加载。如果D.
省略,则仅获取 10 个最新的产品/实体 ID。
我不清楚它C.
本身如何加载产品,但可以D.
追溯更改已经加载的内容。
C. $productCollection = Mage::getModel('catalog/product')->getCollection()
->setPageSize(10)
->addAttributeToFilter('visibility', 3)
->addAttributeToFilter('news_from_date', array('gteq' => $date));
D. if ($sortType == 'shuffle') {
$productCollection->getSelect()->order(new Zend_Db_Expr('RAND()'));
}