如何使用不同的值(從 1 到 3)更新前三個結(jié)果:查詢以獲取前 3 個結(jié)果:$top3 = DB::table('quests') ->orderby('score', 'desc') ->take(3) ->pluck('id'); 查詢更新排名為 1 到 3 的列:DB::table('quests')->whereIn('id', $top3) ->first()->update(['rank', 1]) ->second()->update(['rank', 2]) ->third()->update(['rank', 3]); //of course the above updates are from my imagination :) //just trying to describe what I'm trying to do
1 回答

呼啦一陣風
TA貢獻1802條經(jīng)驗 獲得超6個贊
您的第二個查詢是多余的;沒有理由查詢ids只是再次查詢表。在一個查詢/循環(huán)中完成所有操作:
$top3 = Quest::orderBy("score", "DESC")->take(3)->get();
foreach($top3 AS $index => $quest){
$quest->rank = $index+1;
$quest->save();
}
注意:這假設您有一個Quest模型;仍然可以使用DB::table(),但如果您使用 Laravel,請使用模型。
以上將在單個查詢中獲取 3 條記錄,正確處理排序和限制,然后循環(huán)并分配排名(基于 0 $index,每次循環(huán)遞增,加 1 處理)
- 1 回答
- 0 關注
- 152 瀏覽
添加回答
舉報
0/150
提交
取消