我有一个$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
,但我希望它能够修改之前的值。
答案 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);