【发布时间】:2019-08-14 12:52:09
【问题描述】:
我遇到了一些问题,我的刀片模板在相关表上的下拉选择中验证失败。我试图搜索答案,但找不到。
在验证函数中临时注释掉数组内的字段'business_unit_id'以避免错误。
在控制器更新功能中:
$item = CostCenter::findOrFail($id);
$validatedData = $request->validate([
'code' => 'bail|min:4|required|max:6',
'descr' => 'bail|min:4|required|max:50',
'business_unit_id' => 'required|integer',
]);
$item->fill($validatedData);
$item->business_unit_id = $request->businessUnit;
$item->save();
$request->session()->flash('status', 'Cost centers record was updated!');
return redirect()->route('costCenters.show', ['cost_centers' => $item->id]);
在刀片模板中:
<label for="businessUnit" class="col-sm-2 col-form-label">Business Unit</label>
<select name="businessUnit" class="form-control">
@foreach (App\Models\BusinessUnit::all() as $data)
<option value="{{ $data->id }}"
{{ old('business_unit_id', $cost_centers->business_unit_id ?? '1')
!= $data->id ?: 'selected' }}>
{{ $data->code }} - {{ $data->descr }}
</option>
@endforeach
</select>
收到的通知是“需要业务单位 ID 字段”。使用我的错误助手。
【问题讨论】:
-
您已将选择元素命名为
"businessUnit"。它应该被命名为"business_unit_id"。 -
我之前尝试将控件命名为与需要验证的模型字段相同的名称,但验证不起作用。它呈现 SQLSTATE[23000] 错误:[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Cannot insert the value NULL into column 'business_unit_id', table 'epms.dbo.cost_centers';列不允许空值。更新失败。 (SQL: update [cost_centers] set [business_unit_id] = ?, [cost_centers].[updated_at] = 2019-08-14 09:25:11.360 where [id] = 1)
-
嗨 Suraj,只是为了让您知道,现在您的建议有效。我不明白为什么我以前尝试过的时候没有。
-
我现在意识到它以前可能不起作用的原因是我在控制器中提交了“create”而不是“update”中的更改。谢谢。
标签: php laravel laravel-blade