2016-10-07 76 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();