使用eloquent / Larvael 5.x随机获取相关项目

时间:2016-10-07 05:53:50

标签: mysql laravel laravel-5 eloquent

简单地说,如果我有一个包含许多相关项目的实体(hasMany),我该如何获取该实体及其相关项目随机排序

我这样取:

 $question = Question::with('categories', 'answers')->where( _some_parameters_ ) ... ->get(); 

我如何改变这些答案'在结果对象中?

3 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

$question = Question::with(['categories', 'answers' => function($q) {
    $q->orderByRaw('RAND()');
}])->where( _some_parameters_ )
->get();

这仅适用于MySQL。

答案 1 :(得分:0)

在Laravel而不是MySQL中进行“shuffle”:

 $question = Question::with('categories', 'answers')->
     where( _some_parameters_ ) ... ->get()->shuffle(); 

答案 2 :(得分:0)

Laravel 5.2 中,您可以尝试以下代码:

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