我有一个名为Question的Eloquent模型链接到名为questions的数据库表.
是否有一个Eloquent函数可以让我从数据库中提取一个随机问题(或一组随机问题)?类似于以下内容:
$random_question = Question::takeRandom(1)->get();
要么
$random_questions = Question::takeRandom(5)->get();
解决方法
你可以这样做:
$random_question = Question::orderBy(DB::raw('RAND()'))->take(1)->get();
和
$random_question = Question::orderBy(DB::raw('RAND()'))->take(5)->get();
如果要使用问题中指定的语法,可以使用范围.
在模型问题中,您可以添加以下方法:
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查询范围的更多信息