我们如何在 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/