获取批量更新以在 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]);
我的应用程序是在 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]);