@acspro

Как в миграции после добавления поля типа DateTime выполнить запрос, заполнить его значением из created_at?

Здравствуйте. Изучаю Laravel. Делаю блог. Есть таблица с постами. Сделал миграцию в которой добавляю новое поле published_at типа DateTime.
$table->dateTime('published_at')->after('status')->nullable();

Мне нужно сделать чтобы был не пустое по умолчанию это поле. Если использовать default - у меня получается заносить только конкретные значения. А я бы хотел чтоы значения автоматически заносились из created_at при добавлении поля.
Я попробовал добавить такой код и естественно он не выполнился:
DB::raw('UPDATE `news` SET `published_at`=`created_at`');
            $table->dateTime('published_at')->nullable(false)->change();

Подскажите как правильно сделать, уважаемые гуру.
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
deniamnet
@deniamnet
New Yorker, web developer
Сделайте мутатор поля в модели, записав туда текущий таймстэмп от Карбона:

public function setPublishedAtAttribute($value)
{
    $this->attributes['published_at'] = ( ! empty($value)) ? $value : Carbon::now();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы