1 頁 (共 1 頁)

Laravel 中如何从数据库中获取随机的数据?

發表於 : 2018-11-14 17:20:47
yehlu
https://laravel-china.org/index.php/wikis/16199

Laravel >= 5.2 可以使用:

User::inRandomOrder()->get();
或者随机读取一条信息:

User::inRandomOrder()->first();
请注意以下的这种查询方式只能支持 MySQL 数据库:

User::orderByRaw("RAND()")->get();
如果你自己要实现类似于 inRandomOrder 的功能,并支持不同的数据库驱动,可以参考以下:

use Illuminate\Database\Query\Builder;

Builder::macro('orderByRandom', function () {

$randomFunctions = [
'mysql' => 'RAND()',
'pgsql' => 'RANDOM()',
'sqlite' => 'RANDOM()',
'sqlsrv' => 'NEWID()',
];

$driver = $this->getConnection()->getDriverName();

return $this->orderByRaw($randomFunctions[$driver]);
});