【问题标题】:Updating rows in laravel mysql database更新 laravel mysql 数据库中的行
【发布时间】:2017-11-16 20:04:33
【问题描述】:

我已经建立了一个数据库,并想为我的UsersController 中的每一行更新status 列:

我是从这个开始的:

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

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

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

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

所以对我来说,不清楚如何通过 foreach 遍历表格。然后将我的代码中的计算状态保存到每个单独的 id 中?

【问题讨论】:

    标签: php mysql laravel laravel-5


    【解决方案1】:

    @Serge 解决方案适用于少数记录,但您应该能够按照@ceejayoz 的建议使用chuck

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

    【讨论】:

      【解决方案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();
      }
      

      例如,您还可以考虑使用更实用的地图方法...

      【讨论】:

      • 如果表确实包含数百万行,请查看chunk函数。
      猜你喜欢
      • 2015-04-16
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      相关资源
      最近更新 更多