当我尝试创建但未填写fixed_quantity的输入时
这是我在Controller中的商店(我已将fixed_quantity设置为nullable,所以应该没事吧?):
$this->validate($request, [
'name' => 'required',
'description' => 'required',
'fixed_quantity' => 'nullable',
'max_increments' => 'required|numeric|min:0',
]);
DB::transaction(function () use ($request, $store, $variant) {
$subscription_plan = new SubscriptionPlan([
'store_id' => $store->uuid,
'variant_id' => $variant->uuid,
'name' => $request->input('name'),
'description' => $request->input('description'),
'max_increments' => $request->input('max_increments'),
]);
$subscription_plan->fixed_quantity = $request->input('fixed_quantity');
$subscription_plan->save();
这就是我的刀片:
<div class="form-group">
<label for="fixed_quantity">Quantity</label>
<input class="form-control" type="number" id="fixed_quantity" name="fixed_quantity" value="{{ old('fixed_quantity') }}"" placeholder="0">
</div>
答案 0 :(得分:3)
如果您仔细观察,错误就是说它正在尝试将''
放在该列中。
检查输入是否为空,如果输入为空,则不要设置。
if (!empty($request->input('fixed_quantity')))
$subscription_plan->fixed_quantity = $request->input('fixed_quantity');
答案 1 :(得分:0)
尝试
在插入前检查fixed_quantity
'fixed_quantity' => $request->has('fixed_quantity') ? $request->input('fixed_quantity') : NULL,
此nullable
作为字符串存储在integer field
上,这就是为什么
'fixed_quantity' => 'nullable',
答案 2 :(得分:0)
nullable
表示null
是一个可接受的值,但是您要向其传递一个空字符串(''
),而不是。将您的代码更改为以下内容:
$subscription_plan->fixed_quantity = !empty($request->input('fixed_quantity')) ? $request->input('fixed_quantity') : null;