Я в процессе преобразования одного из наших веб-приложений от 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();