即使我将验证设置为可为空

时间:2018-10-31 11:53:45

标签: php laravel-5

我收到此错误: enter image description here

当我尝试创建但未填写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>

3 个答案:

答案 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;