我的表单中有一个复选框字段,如果选中了复选框,我希望将数据插入数据库,如果未选中复选框,则删除数据库中的数据。
这是我的复选框代码:
<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>这是我的控制器:
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();
}
}
}如果复选框已被选中,则插入数据库,但如果未选中复选框,我不知道如何删除数据库中的数据
发布于 2022-01-06 04:38:05
我希望company_id字段是一个多选择类型,因此该值将以数组的形式返回。我想下面的代码在这种情况下会起作用。
$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();
}发布于 2022-01-06 04:31:52
啊!!我发现了一个叫whereNotIn的东西。我只需要检查数据是否不在我的数组请求中。
EmployeeSpvCompany::whereNotIn('company_id', $request->company_id)->delete();https://stackoverflow.com/questions/70602280
复制相似问题