我有一個收藏$questions = ExaminationQuestion::where('question_set_id', $set->id) ->where('marks', array_flip($marks)['2 Marks']) ->inRandomOrder() ->get();它的科目能力、化學、數(shù)學、英語、物理存儲為 0、1、2、3、4。[{ id: 1, question_set_id: 1, subject: 0,},{ id: 2, question_set_id: 1, subject: 0,},{ id: 1, question_set_id: 1, subject: 1,},{ id: 2, question_set_id: 1, subject: 1,},{ id: 1, question_set_id: 1, subject: 2,},{ id: 2, question_set_id: 1, subject: 2,},{ id: 1, question_set_id: 1, subject: 3,},{ id: 2, question_set_id: 1, subject: 3,},{ id: 2, question_set_id: 1, subject: 4,},{ id: 2, question_set_id: 1, subject: 4,},]我想通過不改組每個問題而是改組主題來以隨機順序顯示 $questions 。就像以隨機順序顯示所有數(shù)學問題然后以隨機順序顯示所有物理問題等等??颇靠梢园慈魏雾樞螂S機排列,但問題不應該像先顯示一個 Aptitude 問題然后顯示另一個英語問題那樣隨機排列。它應該像這樣或以任何順序顯示,但要根據(jù)主題。[{ id: 1, question_set_id: 1, subject: 3,},{ id: 2, question_set_id: 1, subject: 3,},{ id: 1, question_set_id: 1, subject: 2,},{ id: 2, question_set_id: 1, subject: 2,},{ id: 1, question_set_id: 1, subject: 0,},{ id: 2, question_set_id: 1, subject: 0,},{ id: 1, question_set_id: 1, subject: 4,},{ id: 2, question_set_id: 1, subject: 4,},{ id: 2, question_set_id: 1, subject: 1,},{ id: 2, question_set_id: 1, subject: 1,},]
1 回答

胡說叔叔
TA貢獻1804條經(jīng)驗 獲得超8個贊
Laravel 的集合允許你使用一些輔助方法來做到這一點:
$questions->groupBy('subject')->shuffle()->flatten(1);
groupBy('subject') 將為您提供類似于以下內容的 2d 集合:
[
subject id => [question, question, ...],
subject id => [question, question, ...],
..
]
shuffle() 將洗牌上述集合。
flatten(1)將刪除分組級別,為您提供按隨機主題分組的問題的平面列表。該參數(shù)的1意思是“只壓平一層”;如果你忽略它,你會得到奇怪的結果。
- 1 回答
- 0 關注
- 163 瀏覽
添加回答
舉報
0/150
提交
取消