获取批量更新以在 laravel 5.6 中工作

Getting bulk update to work in laravel 5.6

我的应用程序是在 laravel 5.6

中制作的

情况: 我有一个名为 "members" 的 table 和一个名为 "membershipstatus_id" 的列。 状态选项为 4、5 和 1
4 = 有效,5 = 待定,1 = 已过期

目标: 我想将所有 active(4) 成员更新为 pending(5) 并将所有 pending 成员更新为 expire(1)。

我尝试过的解决方案: 到目前为止,以下是我尝试过但没有结果的方法。

    // get all active and pending members        
    $members = Member::where('membershipstatus_id', 5)
                ->orWhere('membershipstatus_id', 4)
                ->get();


    // bulk update with chunk of 200, if this is possible
    $members->chunk(200, function($members)
    {


        foreach($members as $member)
        {

            // if status is pending, update to expire
            if($member->membershipstatus_id == 5)
            {
              $member->update(['membershipstatus_id' => 1]);
             }
            // if status is active, update to pending, i updated a small mistake here. 
            if($member->membershipstatus_id == 5)
            {
              $member->update(['membershipstatus_id' => 4]);
             }


        }
    }
 );

return "update confirm";

现在,如果有人有更简洁的 swift 方法来执行此操作,请告诉我,另外,我确定我在那里犯了一些愚蠢的错误。请给我指明正确的方向。

阿希什

像这样使用查询生成器:

// update pending to expired
DB::table('members')
    ->where('membershipstatus_id', 5)
    ->update(['membershipstatus_id' => 1]);

// update active to pending
DB::table('members')
    ->where('membershipstatus_id', 4)
    ->update(['membershipstatus_id' => 5]);