Laravel 5使用不同的值更新多行

Geo*_*dis 6 php mysql laravel

我一直在寻找解决方案,我希望有人已经解决了这个问题,或者有一些改进的好主意.

我正在使用Laravel 5,我遇到了需要使用新值更新许多行的情况.现在我正在为所有这些行做一个for循环来更新它们,我想优化它,这样我就不会运行很多sql查询.这是一个示例代码:

<?php

   //Well, the original code looks better than this, but the concept is the same

   $myrows = [0,1,2,3,4,5,6,7,8,9];
   $myvalues = [45,543,657,574,234,26457,2462,897,234,89032];

   for($i=0;$i<count($myrows);$i++) {
      MyClass::where('id', $myrows[$i])->update(['myColumn' => $myvalues[$i]]);
   }

?>
Run Code Online (Sandbox Code Playgroud)

显然,这将执行10个查询(相同数量的我想更新的行),但我想只有一个查询要做到这一点,对于优化的目的.我知道能够使用whereIn(...) - > update(...)同时更新许多行,但是使用此方法,您只能将所有行更新为相同的值,而不是像我的那样更新不同的行例.

在此先感谢您的帮助!

Ein*_*mer -1

这不是 Laravel QueryBuilder 的问题。如果您只能通过一个 SQL 查询来完成您的工作,那么您几乎可以使用 Laravel 来完成。

  • 这个答案没有指定什么以及如何进行多行更新。 (10认同)