我的应用程序是在laravel 5.6中制作的
情况:
我有一个名为“ members”的表,其中有一列名为“ membershipstatus_id”。
状态选项为4、5和1
4 =有效,5 =待处理和1 =过期
目标: 我想将所有active(4)成员更新为pending(5),并将所有pending过期(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";
现在,如果有人可以用一种更快捷的方法来进行此操作,也请让我知道,我确定我在这里犯了一些愚蠢的错误。请为我指出正确的方向。
阿什什
答案 0 :(得分:1)
使用查询构建器,例如:
// 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]);