2016-10-07 110 views
1

简单地说,如果我有一个实体有很多相关的项目(hasMany),我该如何取出那个实体,它的相关项目是随机排列的那些相关行随机抽取相关物品,以eloquent/Larvael 5.x

我取像这样:

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

我将如何洗牌的结果对象的“答案”?

回答

2

你可以尝试这样的事:

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

这仅是MySQL虽然。

+1

这工作就像一个魅力,谢谢。 – evanr

0

要做到在Laravel的 “洗牌”,而不是的MySQL:

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

Laravel 5.2你可以试试这个代码:

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