簡單地說,如果我有一個實體有很多相關的項目(hasMany),我該如何取出那個實體,它的相關項目是隨機排列的那些相關行隨機抽取相關物品,以eloquent/Larvael 5.x
我取像這樣:
$question = Question::with('categories', 'answers')->where(_some_parameters_) ... ->get();
我將如何洗牌的結果對象的「答案」?
簡單地說,如果我有一個實體有很多相關的項目(hasMany),我該如何取出那個實體,它的相關項目是隨機排列的那些相關行隨機抽取相關物品,以eloquent/Larvael 5.x
我取像這樣:
$question = Question::with('categories', 'answers')->where(_some_parameters_) ... ->get();
我將如何洗牌的結果對象的「答案」?
你可以嘗試這樣的事:
$question = Question::with(['categories', 'answers' => function($q) {
$q->orderByRaw('RAND()');
}])->where(_some_parameters_)
->get();
這僅是MySQL雖然。
要做到在Laravel的 「洗牌」,而不是的MySQL:
$question = Question::with('categories', 'answers')->
where(_some_parameters_) ... ->get()->shuffle();
在Laravel 5.2你可以試試這個代碼:
User::inRandomOrder()->get();
這工作就像一個魅力,謝謝。 – evanr