Использование «added_at» как «create_at» в модели Laravel в Laravel 8

В Laravel столбец временной метки «created_at» используется по умолчанию для хранения времени создания записи. Однако могут быть случаи, когда вы захотите использовать другой столбец, например «added_at», в качестве отметки времени «created_at». В этой статье мы рассмотрим несколько способов добиться этого в Laravel 8, а также приведем примеры кода.

Метод 1: использование событий модели Laravel
Один из способов использовать «added_at» в качестве «create_at» — использовать события модели Laravel. События модели позволяют подключаться к различным этапам жизненного цикла модели, включая создание новой записи. Вот как это можно реализовать:

Шаг 1. Определите столбец “added_at” при миграции:

Schema::create('your_table', function (Blueprint $table) {
    $table->timestamp('added_at')->nullable();
});

Шаг 2. Обновите модель, чтобы установить «added_at» в качестве временной метки «create_at»:

class YourModel extends Model
{
    protected $dates = ['added_at'];
    public static function boot()
    {
        parent::boot();
        static::creating(function ($model) {
            $model->created_at = $model->added_at;
        });
    }
}

Метод 2: переопределение метода «create».
Другой подход заключается в переопределении метода «create» в вашей модели, чтобы установить «added_at» в качестве временной метки «create_at». Вот пример:

class YourModel extends Model
{
    protected $fillable = ['added_at'];
    public static function create(array $attributes = [])
    {
        $attributes['created_at'] = $attributes['added_at'];
        return parent::create($attributes);
    }
}

Метод 3: использование мутаторов Laravel
Мутаторы Laravel позволяют изменять значения атрибутов при их получении или установке. Мы можем использовать мутаторы, чтобы установить «added_at» в качестве временной метки «created_at». Вот как это можно сделать:

class YourModel extends Model
{
    protected $fillable = ['added_at'];
    public function setCreatedAtAttribute($value)
    {
        $this->attributes['created_at'] = $this->attributes['added_at'];
    }
}

В этой статье мы рассмотрели три различных метода использования «added_at» в качестве «created_at» в моделях Laravel в Laravel 8. Используя события модели, переопределяя метод «create» или используя мутаторы, вы можете легко настроить поведение. столбца временной метки «created_at», чтобы использовать нужный столбец. Выберите метод, который лучше всего соответствует требованиям вашего приложения, и реализуйте его соответствующим образом.