首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果未选中复选框,则删除数据库中的记录

如果未选中复选框,则删除数据库中的记录
EN

Stack Overflow用户
提问于 2022-01-06 03:57:49
回答 2查看 334关注 0票数 0

我的表单中有一个复选框字段,如果选中了复选框,我希望将数据插入数据库,如果未选中复选框,则删除数据库中的数据。

这是我的复选框代码:

代码语言:javascript
复制
<ul class="list-unstyled mb-0">
   @foreach ($companies as $company)
   <li class="d-inline-block mr-2 mb-1">
      <fieldset>
         <div class="checkbox">
            <input type="checkbox" name="company_id[]"
            class="checkbox-input" value="{{ $company->id }}"
            id="{{ $company->id }}" 
            @foreach ($supervisor_company as $spv)
              @if ($spv != null)
                @if ($spv->company_id == $company->id)
                  checked
                @endif
              @endif
            @endforeach>
            <label for="{{ $company->id }}">{{ $company->name }}</label>
         </div>
      </fieldset>
   </li>
   <li class="d-inline-block mr-2 mb-1">
      @endforeach
</ul>

这是我的控制器:

代码语言:javascript
复制
if ($request->has('company_id')) {
    foreach ($request->company_id as $key => $company) {
        $spv_data = EmployeeSpvCompany::where('employee_id', $employee_id)->where('company_id', $company)->first();
        if ($spv_data != null) {
            EmployeeSpvCompany::where('employee_id', $employee_id)->where('company_id', $company)->update(['company_id' => $company]);
        } else {
            $emp_spv = new EmployeeSpvCompany;
            $emp_spv->employee_id = $employee_id;
            $emp_spv->company_id = $company;
            $emp_spv->save();
        }
    }
}

如果复选框已被选中,则插入数据库,但如果未选中复选框,我不知道如何删除数据库中的数据

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-06 04:38:05

我希望company_id字段是一个多选择类型,因此该值将以数组的形式返回。我想下面的代码在这种情况下会起作用。

代码语言:javascript
复制
$companyIds = $request->has('company_id'); // [1, 2]

if ($companyIds) {
    foreach ($companyIds as $company_id) {
        $employeeSpvCompanyInstance = EmployeeSpvCompany::firstOrCreate([
            'employee_id' => $employee_id,
            'company_id' => $company_id
        ]);
    }
    EmployeeSpvCompany::where('employee_id', $employee_id)->whereNotIn('company_id', $companyIds)->delete();
} else {
    EmployeeSpvCompany::where('employee_id', $employee_id)->delete();
}
票数 1
EN

Stack Overflow用户

发布于 2022-01-06 04:31:52

啊!!我发现了一个叫whereNotIn的东西。我只需要检查数据是否不在我的数组请求中。

代码语言:javascript
复制
EmployeeSpvCompany::whereNotIn('company_id', $request->company_id)->delete();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70602280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档