首页 > 解决方案 > Laravel - 当前状态为1时如何将所有状态设置为0

问题描述

我的 Laravel 5.8 控制器中有这段代码:

public function store(StoreIdentityRequest $request)
{
        $userCompany = Auth::user()->company_id;

        $identity = Identity::create([
            'name'                 => $request->name,
            'is_status'            => $request->has('is_status'),
        ]);    
        $id = $identity->id;
        
        Identity::where('id', '!=', $id)
            ->where('company_id', $userCompany)
            ->update(['is_current' => 0]);
}

is_status可以是 0 或 1。

当用户提交时,如果当前(或选定)is_status为 1,我希望应用程序将is_status除当前值之外的所有其他值切换为 0。

我应用了这个代码,如控制器中所示:

Identity::where('id', '!=', $id)
    ->where('company_id', $userCompany)
    ->update(['is_current' => 0]);

但即使电流is_status为0,它也会将所有内容变为0

我该如何解决这个问题?

标签: laravel

解决方案


你做得很好,先做 is_current = 0 ,然后用 is_current = 1 做你的新条目:像这样

    public function store(StoreIdentityRequest $request)
    {
            $userCompany = Auth::user()->company_id;
     if($request->is_status == 0){
      Identity::where('company_id', $userCompany)->update(['is_status'=>0]);
    }
            $identity = Identity::create([
                'name'                 => $request->name,
              'is_status'            => $request->is_status,
            ]);    
           
    }

推荐阅读