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

阿卜杜拉·萨克雷(Abdallah Sakre)

如何用不同的值(从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
蒂姆·刘易斯

您的第二个查询是多余的;没有理由要查询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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Laravel 5.2中使用不同的数据库表列名登录?

如何在熊猫数据框中保持每组的前三行?

如何在Laravel中使用不同的Redis连接

如何在Angular中使用不同的参数更新相同的组件

如何在Laravel中使用多个ID将单个值更新到数据库中?

如何在C#中使用不同的值更新数据库中的多行?

如何在Python中使用循环从txt文件中提取单词(第二行和第三行)

如何在Laravel 5.6的一个刀片文件中使用不同的形式

如何在Laravel中使用不同的连接进行批量插入?

如何在新列中获取前三行和后三行的总和

如何基于csv中的列查找前三行?

如何在Laravel中使用单个值更新多行?

如何在不同的行中使用不同的条件进行过滤?

如何在laravel 8中使用不同的数据透视表播种多对多关系?

如何在android sqlite中使用列值更改来更新特定行

SQL:使用不同的值更新多行

如何在laravel 4.1中的控制器中使用不同的名称空间

如何在文件的前三行加上不同的变量作为前缀?

如何使用Java在同一方法中使用不同的字符串值更新变量?

显示前三行

如何在MySql中使用Join添加三行并保留在第三列中

如何在PHP中使用不同的查询添加两个不同的行

如何在视图laravel中使用不同的变量名

如何在不同文件中的模式后打印连续三行

如何在EXCEL中选择不同(不相邻)列中的最后三行

如何在 Laravel 中使用相同的路由调用不同控制器的方法

如何在 PHP 中使用不同的数据更新 2 个不同的列?

Laravel:在不同的行中使用不同的 where 条件查询

如何在 Python 中使用不同的列表元素更新字典