В 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», чтобы использовать нужный столбец. Выберите метод, который лучше всего соответствует требованиям вашего приложения, и реализуйте его соответствующим образом.