Отключить яркие временные метки Laravel

Я в процессе преобразования одного из наших веб-приложений от CodeIgniter в Laravel. Однако на данный момент мы не хотим добавлять поля updated_at / created_at ко всем нашим таблицам, так как у нас есть класс ведения журнала, который делает все это более подробно для нас уже.

Я знаю, что могу установить $timestamps = false; в:

 Vendor\laravel\framework\src\illuminate\Datebase\Eloquent\Model.php 

Однако я бы предпочел не менять основной файл для Laravel, или у каждого из моих моделей есть то, что наверху. Есть ли способ отключить это в других местах для всех моделей?

Вы либо должны объявить public $timestamps = false; в каждой модели или создать BaseModel, определите ее там, и все ваши модели расширят ее, а не красноречиво. Только голова в сводных таблицах ДОЛЖНА иметь метки времени, если вы используете Eloquent.

Обновление: обратите внимание, что временные метки больше не требуются в сводных таблицах после Laravel v3.

Обновление. Вы также можете отключить отметки времени, удалив $table->timestamps() из вашей миграции.

Просто поместите public $timestamps = false; в вашей модели.

Если вам нужно только отключить обновление update_at, просто добавьте этот метод в свою модель.

 public function setUpdatedAtAttribute($value) { // to Disable updated_at } 

Это переопределит родительский метод setUpdatedAtAttribute (). created_at будет работать как обычно. Точно так же вы можете написать метод для отключения обновления только created_at.

Переопределите функции setUpdatedAt() и getUpdatedAtColumn() в вашей модели

 public function setUpdatedAt($value) { //Do-nothing } public function getUpdatedAtColumn() { //Do-nothing } 

Красноречивая модель:

 class User extends Model { protected $table = 'users'; public $timestamps = false; } 

Или просто попробуйте это

 $users = new Users(); $users->timestamps = false; $users->name = 'John Doe'; $users->email = 'johndoe@example.com'; $users->save();