«общая ошибка: 1366 неверное целочисленное значение», хотя я установил для проверки значение null

Я получаю такую ​​ошибку: enter image description here

Когда я пытаюсь создать и не заполняю ввод для fixed_quantity

Это мой магазин в моем контроллере (я установил для fixed_quantity значение NULL, так что все должно быть в порядке, верно?):

 $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>

Какая ценность хранится? Вы можете проверить? Потому что, если ввод числовой, и он пуст, я думаю, что Laravel попытается установить его как пустую строку.

Phiter 31.10.2018 12:56

@Phiter это просто '' в ошибке, так как она не сохраняется в db.

eibersji 31.10.2018 12:57
0
2
82
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

попробуй это

проверьте fixed_quantity перед вставкой

'fixed_quantity' => $request->has('fixed_quantity') ? $request->input('fixed_quantity') : NULL,

этот nullable хранится как строка на integer field, поэтому

'fixed_quantity'            => 'nullable',
Ответ принят как подходящий

Если присмотреться, то ошибка говорит о том, что пытается поставить '' в столбец.

Проверьте, пуст ли вход, и не устанавливайте его, если это так.

if (!empty($request->input('fixed_quantity')))
    $subscription_plan->fixed_quantity = $request->input('fixed_quantity');

Кстати, в Laravel есть промежуточное ПО ConvertEmptyStringsToNull, которое работает точно так, как указано в названии, для каждого параметра запроса.

Phiter 31.10.2018 13:00

nullable означает, что null является допустимым значением, но вы передаете ему пустую строку (''), а это не так. Измените свой код на что-то вроде этого:

$subscription_plan->fixed_quantity = !empty($request->input('fixed_quantity')) ? $request->input('fixed_quantity') : null;

Другие вопросы по теме