PHP Laravel Eloquent:获取随机的数据

dunn · 2019-05-12 07:31:05 · 热度: 45

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]);
});

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册