如果在 cakephp 4 中对随机查找查询使用分页,会得到意想不到的结果吗?
Getting unexpected result if using pagination on random find query in cakephp 4?
我正在尝试使用分页以随机顺序查找所有产品。却得到意想不到的结果。
这是我的控制器代码:
$this->paginate = ['maxLimit' => 20];
$articlesData = $this->Products->find('all');
$articlesData->order('RAND()');
$articles = $this->paginate($articlesData);
所以我每次都是随机结果,这是页面的需求。我有 200 种产品。假设第一项是第一页上的第 12 项,然后如果我转到下一页并再次转到上一页,那么第一项应该是第 12 项,但它随机更改。有解决办法吗?
我需要分页,因为产品数量很快就会达到 1000。并且需要随机结果,因为我不希望该用户在首页上看到相同的第一个产品。第一个产品应该在第一页上,但不要每次都在同一个位置。有什么方法可以让我以随机顺序制作包含 20 个项目的分页数组吗?
欢迎所有建议。
如何在视图模板中重新排列结果的示例。在控制器中 select 来自最新的文章,但在模板中每次都在不同的地方显示这 20 个结果。
#控制器
$this->paginate = ['maxLimit' => 20];
$articlesData = $this->Products->find();
$articlesData->orderDESC('creates');
$articles = $this->paginate($articlesData);
$this->set(compact('articles'));
#模板
foreach(shuffle($articles->toArray() as $article) {
echo $article['name'];
}
当您随机订购时,它们是随机订购的。每个页面加载都将是一个新的随机顺序。有关如何使订单可预测的示例,请参阅 this;例如,您可以使用用户 ID 为生成器播种,那么给定用户的顺序将始终相同。或者结合用户详细信息和日期为他们明天提供不同的随机订单。或随机生成一个种子,然后将其保存在会话中,以更精确地控制持续时间。
我正在尝试使用分页以随机顺序查找所有产品。却得到意想不到的结果。 这是我的控制器代码:
$this->paginate = ['maxLimit' => 20];
$articlesData = $this->Products->find('all');
$articlesData->order('RAND()');
$articles = $this->paginate($articlesData);
所以我每次都是随机结果,这是页面的需求。我有 200 种产品。假设第一项是第一页上的第 12 项,然后如果我转到下一页并再次转到上一页,那么第一项应该是第 12 项,但它随机更改。有解决办法吗?
我需要分页,因为产品数量很快就会达到 1000。并且需要随机结果,因为我不希望该用户在首页上看到相同的第一个产品。第一个产品应该在第一页上,但不要每次都在同一个位置。有什么方法可以让我以随机顺序制作包含 20 个项目的分页数组吗?
欢迎所有建议。
如何在视图模板中重新排列结果的示例。在控制器中 select 来自最新的文章,但在模板中每次都在不同的地方显示这 20 个结果。
#控制器
$this->paginate = ['maxLimit' => 20];
$articlesData = $this->Products->find();
$articlesData->orderDESC('creates');
$articles = $this->paginate($articlesData);
$this->set(compact('articles'));
#模板
foreach(shuffle($articles->toArray() as $article) {
echo $article['name'];
}
当您随机订购时,它们是随机订购的。每个页面加载都将是一个新的随机顺序。有关如何使订单可预测的示例,请参阅 this;例如,您可以使用用户 ID 为生成器播种,那么给定用户的顺序将始终相同。或者结合用户详细信息和日期为他们明天提供不同的随机订单。或随机生成一个种子,然后将其保存在会话中,以更精确地控制持续时间。