一尘不染

Laravel-雄辩或流利的随机行

php

如何在Laravel框架中使用Eloquent或Fluent选择随机行?

我知道通过使用SQL,您可以通过RAND()进行订购。但是,我想在 计算初始查询之前的记录数的 情况下 获得随机行。

有任何想法吗?


阅读 277

收藏
2020-05-26

共1个答案

一尘不染

Laravel > = 5.2:

User::all()->random();
User::all()->random(10); // The amount of items you wish to receive

要么

User::inRandomOrder()->get();

或获取特定记录数

//5 indicates the number of records
User::inRandomOrder()->limit(5)->get();

Laravel 4.2.7-5.1:

User::orderByRaw("RAND()")->get();

Laravel 4.0-4.2.6:

User::orderBy(DB::raw('RAND()'))->get();

Laravel 3:

User::order_by(DB::raw('RAND()'))->get();

查看有关MySQL随机行的 本文 。Laravel5.2支持这一点,对于较旧的版本,没有比使用RAWQueries更好的解决方案了。

编辑1: 如DoubleGras所述,由于此更改,orderBy()不允许ASC或DESC之后的任何其他内容。我相应地更新了我的答案。

编辑2: Laravel5.2最终为此实现了包装函数。它称为 inRandomOrder()

2020-05-26