不幸的是,我目前没有办法测试这段代码,但想问问社区结果会是什么,以及幕后执行的操作顺序。这是一个简短的 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()'));
}