我有这种雄辩的查询,我需要从表中随机抽取行,并有限制,但它返回错误,当我使用限制时,它只提取一行,无论我将什么数字作为限制。当我不使用限制时,它会返回随机行数。不知道我错过了什么。这是代码。
$questions = $query->whereRaw('RAND()')->take($limit)->get();
Run Code Online (Sandbox Code Playgroud)
提前致谢!
你应该一直在使用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();
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |