Упрощение Laravel Eloquent ORM: удаление обновленного_at или использование созданного_at

Вы работаете с Eloquent ORM Laravel и хотите либо удалить столбец updated_at, либо использовать исключительно столбец created_at? В этой статье блога мы рассмотрим несколько способов добиться этого, одновременно упрощая вашу кодовую базу. Мы углубимся в примеры кода и будем использовать разговорный язык, чтобы сделать процесс более доступным. Давайте начнем!

  1. Использование свойства $timestamps.
    Один из самых простых способов удалить столбец updated_at— использовать свойство $timestamps. свойство в ваших моделях Eloquent. По умолчанию для этого свойства установлено значение true, и оно автоматически обрабатывает временные метки created_atи updated_at. Чтобы удалить столбец updated_at, просто установите для $timestampsзначение falseв вашей модели:
class YourModel extends Model
{
    public $timestamps = false;
}
  1. Переопределение поля updated_at:
    Если вы хотите сохранить столбец updated_at, но запретить его автоматическое обновление, вы можете переопределить поле updated_at. >16поля в вашей модели. В класс YourModelдобавьте следующий код:
class YourModel extends Model
{
    protected $guarded = ['updated_at'];

    public function setUpdatedAt($value)
    {
        return $this;
    }
}

Этот код устанавливает поле updated_atкак защищенное, гарантируя, что его нельзя будет массово назначать. Кроме того, он переопределяет метод setUpdatedAtдля возврата самого экземпляра модели, эффективно предотвращая любые изменения в поле updated_at.

  1. Использование мутаторов.
    Другой подход — использовать мутаторы для обработки столбца updated_atв соответствии с вашими требованиями. Вы можете определить мутатор в своей модели, чтобы манипулировать значением updated_atперед его сохранением в базе данных. Вот пример:
class YourModel extends Model
{
    public function getUpdatedAtAttribute($value)
    {
        return $this->attributes['created_at'];
    }
}

В этом примере мы переопределяем метод getUpdatedAtAttribute, чтобы вместо этого возвращать значение столбца created_at. Это фактически делает столбец updated_atзеркальным отображением столбца created_at.

Используя любой из этих методов, вы можете либо удалить столбец updated_at, либо использовать исключительно столбец created_at, упрощая свою кодовую базу Laravel Eloquent ORM.

Надеюсь, эта статья помогла вам найти подходящее решение для ваших нужд. Упрощение Laravel Eloquent ORM путем удаления или изменения столбца updated_atможет стать ценным шагом на пути к более чистому и удобному в сопровождении коду. Приятного кодирования!