为了账号安全,请及时绑定邮箱和手机立即绑定

如何在laravel中用不同的值更新前三行

如何在laravel中用不同的值更新前三行

PHP
茅侃侃 2022-01-02 15:31:45
如何使用不同的值(从 1 到 3)更新前三个结果:查询以获取前 3 个结果:$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条经验 获得超6个赞

您的第二个查询是多余的;没有理由查询ids只是再次查询表。在一个查询/循环中完成所有操作:


$top3 = Quest::orderBy("score", "DESC")->take(3)->get();

foreach($top3 AS $index => $quest){

  $quest->rank = $index+1;

  $quest->save();

}

注意:这假设您有一个Quest模型;仍然可以使用DB::table(),但如果您使用 Laravel,请使用模型。


以上将在单个查询中获取 3 条记录,正确处理排序和限制,然后循环并分配排名(基于 0 $index,每次循环递增,加 1 处理)


查看完整回答
反对 回复 2022-01-02
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信