如何使用Laravel 4的Eloquent ORM从数据库中选择一个随机条目?
如何使用Laravel 4的Eloquent ORM从数据库中选择一个随机条目?
我有一个名为 Question
的 Eloquent 模型,它与一个名为 questions
的数据库表相关联。
是否有一种 Eloquent 函数可以让我从数据库中随机选择一个单独的问题(或一组随机问题)?类似于以下内容:
$random_question = Question::takeRandom(1)->get();
或
$random_questions = Question::takeRandom(5)->get();
admin 更改状态以发布 2023年5月21日
你可以简单地这样做:
$random_question = Question::orderBy(DB::raw('RAND()'))->take(1)->get();
和
$random_question = Question::orderBy(DB::raw('RAND()'))->take(5)->get();
如果你想使用你在问题中指定的语法,你可以使用作用域。
在模型Question
中,你可以添加以下方法:
public function scopeTakeRandom($query, $size=1) { return $query->orderBy(DB::raw('RAND()'))->take($size); }
现在你可以做$random_question = Question::takeRandom(1)->get();
并且获得1个随机问题。
你可以在http://laravel.com/docs/eloquent#query-scopes阅读更多关于Laravel 4查询作用域的文档。