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

标签 php mysql laravel laravel-4 eloquent

我有一个名为 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();

如果您想使用您在问题中指定的语法,您可以使用范围。 在模型 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 查询范围的更多信息

关于php - 如何使用 Laravel 4 的 Eloquent ORM 从数据库中选择随机条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456947/

相关文章:

php - 使用 csv_from_result 在 CSV 导出中返回字符串而不是数据库条目

php - 有没有更好的方法来插入记录?

php - MySQL 发送大量数据超时/崩溃

php mysqli 删除重复的行但具有不同的 id?

laravel - 如何在 Laravel 5 中过滤数据?

php - 视频播放结束后如何显示HTML?

php - Magento 获取属性

mysql - 将数据复制到同一表中,某些列的值不同

mysql - 需要帮助将嵌套连接查询转换为 Laravel Eloquent

php - laravel 5.4 auth注册自定义错误消息