Laravel一次修改多行

时间:2015-07-29 18:30:33

标签: php mysql laravel

我有一个$ids数组。

我想基本上说:

foreach($ids as $id):

  $user = User::find(1);
  $user->life_expectancy -= 1;
  $user->save();

endforeach;

除了数组中有数千个ID,我更喜欢做类似的事情:

$users = User::whereIn('id', $ids)->update(array('life_expectancy' => --1));

只需在单个查询中完成即可。但那不会起作用......还有另一种方法吗?

我知道我可以将多个用户更新为具有相同的life_expectancy,但我希望它能够修改之前的值。

2 个答案:

答案 0 :(得分:1)

如果您决定使用原始查询,请查看此网站http://community.sitepoint.com/t/one-sql-statement-to-subtract-and-update-a-field-value/4673,但查看laravel's docs我认为您可以这样做,

$users = DB::table('users')
                    ->whereIn('id', $ids)->decrement('life_expectancy');

答案 1 :(得分:0)

App\User::whereIn('id',[1,2])->decrement('life_expectancy');

如果你需要-2使用下一个字符串:

App\User::whereIn('id',[1,2])->decrement('life_expectancy',2);