#php #date #laravel-5 #nullable #homestead
#php #Дата #laravel-5 #nullable #усадьба
Вопрос:
Я использую Laravel 5.1 в Homestead Vagrant box, PHP 7.2.14 в Ubuntu 18.04 с MySQL 5.7.25.
Я создал миграцию с этим:
$table->date('expiry_date')->nullable()->default(null);
У меня есть форма с полем даты под названием expiry_date
, для которого по умолчанию установлено значение null:
{!! Form::date('expiry_date', null, array('class' => 'form-control')) !!}
Когда я ввожу дату в поле, все работает нормально, но когда я оставляю его пустым, оно вставляется 0000-00-00
в базу данных, что затем портит отображение в моем представлении. Единственный способ, которым я смог это исправить, — добавить это в модель:
public function setExpiryDateAttribute($value)
{
$this->attributes['expiry_date'] = $value ?: null;
}
Я раздражен тем, что мне приходится выполнять этот дополнительный шаг, и это не очень похоже на «Laravel», что заставляет меня поверить, что я что-то упускаю.
Интересно то, что он проходит проверку в моем пользовательском запросе:
'expiry_date' => 'date',
Редактировать:
Я protected $dates ['expiry_date']
установил в модели, и это также было добавлено к массовому назначению.
Комментарии:
1. Насколько я знаю, вы не можете обнулить время. По умолчанию используется 0000-00-00 00:00.
2.
input type="date"
значение по умолчанию html5 может быть0000-00-00
пустым… так что технически это не null. смотрите developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date3. Спасибо @ O-9, я попробую и вернусь к вам