php - Laravel - 分页随机记录

标签 php mysql laravel random pagination

我们如何在 laravel 中对随机记录进行分页? 例如:

$products = Product::all()->orderBy(DB::raw('RAND()'));
$products->paginate(4);
$products->setPath('products');

由于随机顺序,以上将以重复记录结尾。 我如何保留 $products 对象,以便在发出新页面请求时,它应该通过相同/固定的随机记录集进行过滤?

最佳答案

当你潜入 documentation mysql 并搜索 RAND() 功能,您将看到您可以使用“种子”。

通过使用种子,您将始终获得相同的随机结果。

例子:

$products = Product

    ::all()

    ->orderBy(DB::raw('RAND(1234)'))

    ->paginate(4);

您可以生成自己的种子并存储在 session 或其他东西中以记住它。

更新

Laravel query builder现在有一个功能完全相同:

$products = Product

    ::all()

    ->inRandomOrder('1234')

    ->paginate(4);

关于php - Laravel - 分页随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37546922/

相关文章:

sql - 合并数据库结构从一台服务器更改到另一台服务器

image - 如何在 Laravel 5.1 中从数据库中检索图像?

php - 日期、月份和年份下拉框

php - 将数字与公差进行比较

c# - 如何更新具有 2 个不同 ID 的特定行?

php - 您的 Composer 依赖项需要 PHP 版本 ">= 8.0.0"。您正在运行 7.4.11

php - Laravel 有许多关系无法正常工作

php - PHP 脚本速度慢导致 MySQL 服务器休眠(使用 pconnect())

php - 使用选择和 URL ID 插入数据库

mysql - 按 MySQL 中定义的条件分组