如何使用Laravel 4的Eloquent ORM从数据库中选择一个随机条目?

22 浏览
0 Comments

如何使用Laravel 4的Eloquent ORM从数据库中选择一个随机条目?

我有一个名为 Question 的 Eloquent 模型,它与一个名为 questions 的数据库表相关联。

是否有一种 Eloquent 函数可以让我从数据库中随机选择一个单独的问题(或一组随机问题)?类似于以下内容:

$random_question = Question::takeRandom(1)->get();

$random_questions = Question::takeRandom(5)->get();

admin 更改状态以发布 2023年5月21日
0
0 Comments

$data = Model::where('id',$id)->get()->random($count);

你可以使用random函数。它简单而有效。

0
0 Comments

你可以简单地这样做:

$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查询作用域的文档。

0