Laravel 返回数据库中的随机一行数据

发布时间: 2018-12-19 14:43:21 作者: 大象笔记

最佳方式

$total = Book::count() - 1;
$skip = mt_rand(0, $total);
$item = Book::select('name', 'author_id')->skip($skip)->take(1)->first();

耗内存的方式

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

等同于

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

耗内存的原因是,随机序需要建立临时表。

更加耗内存的 Collection 方案

Book::all()->random(1);
我是一名山东烟台的开发者,联系作者