Значения NULL не вставляются с помощью create ()

У меня есть это поле в форме:

 <label>Office Phone:</label><br>
<input type="number" name="office_phone"  value="{{ old('office_phone') }}" class="form-control"><br>
@if ($errors->has('office_phone'))
<span class="help-block">
<strong>{{ $errors->first('office_phone') }}</strong>
</span>
@endif

Это не обязательное поле. Предполагается вставить нулевые значения в базу данных, если не вводится никаких данных.

У меня есть это правило проверки:

  'office_phone'=>'integer',

И метод create ():

return User::create([
'office_phone'=>$data['office_phone]

Но нулевое значение не вставляется, если не вводится никаких данных: оно выдает ошибку:

Неверный формат даты и времени: 1366 Неверное целочисленное значение: » для столбца
«office_phone» в строке 1

Но если office_phone имеет какое-то значение, он вставлен нормально. Что я делаю неправильно?

office_phone in database has Type int(10) default NULL and Null yes

0

Решение

В вашем случае, что происходит, когда нет значения, то его передача пустой строки '' который является пустым значением в MYSQL. Так что он выдает эту ошибку, так как для целочисленного столбца такое значение не допускается, но для varchar это нормально.

Итак, у вас есть два варианта:

  • Либо измените в MySQL, чтобы установить значение по умолчанию 0
  • проверьте на стороне PHP, пусто ли это, отправьте NULL или 0 в БД.

Для получения дополнительной ссылки:
Вставьте пустую строку в столбец INT для SQL Server

Как разрешить пустую строку для целого числа в MySQL?

1

Другие решения

Если вы не введете данные, то ваше значение будет пустым и "" != NULL, Поэтому, если значение пусто, замените его на ноль. Попробуй это return User::create())

$data['office_phone'] = $data['office_phone'] === ""?NULL:$data['office_phone'];
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector