Intereting Posts
PHP: как автозагрузочные интерфейсы и тезисы Ввод в таблицу из сложного массива с использованием php Почему DomDocument getElementsByTagName возвращает половину NodeList? Magento получает коллекцию продуктов в произвольном порядке Стандарты кодирования и длина линии Переопределение стратегии генерации идентификатора по умолчанию не влияет на ассоциации PHP: Почему нам нужна функция сравнения строк? Добавить AV Scan на сайт загрузки файлов Функция PHP не определена Ошибка и синтаксическая ошибка неуместного </ p> в сгенерированном HTML Массив не работает правильно в Chartjs Отправьте прикрепленный файл по электронной почте с помощью php Расширение файла проверки PHP Как использовать переменную PHP в JavaScript? Yii: сортировка на стороне клиента и разбиение на страницы с помощью CGridView и CArrayDataProvider PHP: Влияние кода после заголовка («Местоположение: abc.html»)

Пользовательский created_at и использовать только custom created_at

Я новичок в Laravel.

Я хочу добавить временную метку для всех действий вставки в Laravel, используя настраиваемое имя поля, например ct и не используя updated_at .

Я придумал ниже, но без везения. Все мои таблицы имеют поле ct с not null свойством.

 class ProductLog extends Model { const CREATED_AT = 'ct'; public $timestamps = false; public static function boot() { parent::boot(); static::creating(function ($model) { $model->created_at = $model->freshTimestamp(); => 1) $model->setCreatedAt($model->freshTimestamp()); => 2) }); } } 

Оба из 1) и 2) все еще выдают мне ошибку, говоря, что «ct» не имеет значения по умолчанию.

Любое предложение или совет будут оценены.

Заранее спасибо.

Я только что испытал это, и он отлично работает:

 const UPDATED_AT = null; const CREATED_AT = 'ct'; 

Больше ничего не нужно. С помощью этого решения Laravel будет использовать ct как created_at и не будет добавлять updated_at в любые запросы обновления.

Пытаться:

 class ProductLog extends Model { const CREATED_AT = 'ct'; const UPDATED_AT = null; public $timestamps = false; public static function boot() { parent::boot(); static::creating(function ($model) { $model->ct = $model->freshTimestamp(); }); } } 
 class ProductLog extends Model { const CREATED_AT = 'ct'; public function setUpdatedAt($value) { return $this; // this method does nothing now } } 

Eloquent установит поле created_at ( ct ) для вас вставить [как это уже происходит, когда $timestamps = true; ] и не смогут установить поле update_at .

Вы можете видеть, что делает Eloquent в коде Model@performInsert и Model@performUpdate .