Laravel. Не сохранять пустое значение в БД
Данный материал предоставлен сайтом
PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Запрещаем сохранение в базе данные пустого значения колонки.
Представим, что перед сохранением данных в БД, вам необходимо запретить сохранение пустого значения колонки.
Давайте разберем пример того, как это можно сделать.
Представим, что у нас новостной портал, где мы публикуем новости.
Таблица содержит колонки id, title, description и fulltext.
Пример миграции:
Заголовок наших новостей (title) не может быть пустым. И его длина не может быть менее 5 символов.
При сохранении в БД значение колонки title не может быть пустым, но если по какой то причине из request нам ничего не пришло, то мы получим ошибку. Представлю пару примеров для решения данной проблемы:
- Используем валидатор
$messages = [ 'title.required' => 'Заголовок не может быть пустым', 'title.min' => 'Заголовок не может быть пустым', ]; $validateRule = [ 'title' => [ 'required', 'min:1', ], ]; $v = Validator::make($requiredValue, $validateRule, $messages);
Используя валидатор можно проверить полученное из request значение.
В данном случае поле title должно быть заполнено и должно содержать хотя бы 1 символ. - Запрещаем сохранение модели с пустым значением title.
Допустим у нас есть модель Post, которая наследует класс Model.class Post extends Model { ... }
Запрещаем сохранять запись в БД, если колонка title пустая. Для этого переопределим статический метод boot и обработаем процесс сохранения записи с помощью модели. Добавьте в вашу модель следующий код:protected static function boot() { parent::boot(); // Запретим сохранение пустого title static::saving(function($p) { if(empty($p->title)) { return false; } return true; }); }
Модель должна выглядеть следующим образом:class Post extends Model { protected static function boot() { parent::boot(); // Запретим сохранение пустого title static::saving(function($p) { if(empty($p->title)) { return false; } return true; }); } // Ваш ранее написанный код }
С помощью данного переопределения функции boot, также можно выполнять проверку на размер записываемого значения колонки.
В помощью данных способов вы можете решить свою проблему.
Если у вас есть свои примеры и вы готовы ими поделиться, то вы можете опубликовать их в комментариях.
Это может помочь другим людям, которые столкнулись с похожей проблемой.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.