在laravel mysql数据库中更新行

时间:2017-11-16 20:04:34

标签: php mysql laravel laravel-5

我已经设置了一个数据库,并希望为status中的每一行更新列UsersController

我从这开始:

User::where('id', '=', 1)->update(['status' => $status]);

这是有效的,但我需要一些循环来改变所有行,如下所示:

  1. 来自表格的foreach $ id
  2. 运行一些代码来更改单个$ status变量
  3. 在每行的“status”列中设置单独的$ status值:

    User::where('id', '=', $id)->update(['status' => $status])
    
  4. 结束foreach

  5. 所以对我而言,目前还不清楚如何通过foreach完成整个表格。然后将我的代码中的计算状态保存到每个单独的ID?

2 个答案:

答案 0 :(得分:3)

@Serge解决方案适用于少数记录,但您应该可以使用chuck作为@ceejayoz建议

User::chunk(100, function ($users) {
    $users->each(function ($user) {
        $user->status = getStatus($user);
        $user->save();
    });
});

答案 1 :(得分:2)

除非该表包含数百万行......一个简单的程序方法就是......

$users = Users::get(); // Gets a collection of all users...
foreach ( $users as $user ) {
    //compute your status
    $user->status = get_your_user_status($user->id);
    $user->save();
}

您还可以考虑使用更具功能性的方法,例如......