Laravel 雄辩的随机查询

Mar*_*rco 0 laravel eloquent

我有这种雄辩的查询,我需要从表中随机抽取行,并有限制,但它返回错误,当我使用限制时,它只提取一行,无论我将什么数字作为限制。当我不使用限制时,它会返回随机行数。不知道我错过了什么。这是代码。

$questions = $query->whereRaw('RAND()')->take($limit)->get();
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Gra*_*ble 5

你应该一直在使用orderByRaw.

但是有一个更好的解决方案,你可以添加这个宏:

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]);
});
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做: $query->orderByRandom()->take($limit)->get();