Laravel: Изменить имена временных меток в базе данных
Я пытаюсь переименовать столбцы меток времени (created_at
а также updated_at
) из user
таблица в моей базе данных. Я уже видел этот ответ, но когда я отменяю CREATED_AT
а также UPDATED_AD
такие постоянные:
class User extends Authenticatable
{
const CREATED_AT = 'user_creation_date';
const UPDATED_AT = 'user_update_date';
...
}
все, что он делает, это переименовывает свойства User
модель, т.е. $user->user_creation_date
а также $user->user_update_date
, Столбцы базы данных остаются без изменений. Как мне сделать, чтобы переименовать столбцы моей базы данных, сохраняя при этом функцию автообновления?
Спасибо за помощь.
2 ответа
Вам нужно будет обновить файл миграции пользовательских таблиц в database/migrations
, это будет файл как 2014_10_12_000000_create_users_table.php
,
У вас скорее всего есть $table->timestamps();
в Schema::create
вызов.
Глядя на код для timestamp()
в vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php
это показывает:
public function timestamps($precision = 0) { $this->timestamp('created_at', $precision)->nullable(); $this->timestamp('updated_at', $precision)->nullable(); }
Так:
Schema::create('users', function (Blueprint $table) {
// ..
$table->timestamps();
});
Удалить звонок $table->timestamps();
и добавить добавить два столбца, которые вы хотите вызвать временные метки:
Schema::create('users', function (Blueprint $table) {
// ..
$this->timestamp('user_creation_date', 0)->nullable();
$this->timestamp('user_update_date', 0)->nullable();
});
Вам нужно будет снова запустить миграцию, убедитесь, что вы создали резервную копию данных, так как это приведет к удалению таблицы и ее повторному созданию.
Надеюсь это поможет.
Вы можете использовать атрибуты get, например
class User extends Authenticatable
{
protected $timestamps = true;
protected $hidden = ['created_at', 'updated_at'];
protected $appends = ['user_creation_date', 'user_update_date'];
public function getUserCreationDateAttribute(){
return $this->created_at;
}
public function getUserUpdateDateAttribute(){
return $this->updated_at;
}
}
Теперь вы получите оба столбца created_at
а также updated_at
данные в полях user_creation_date
а также user_update_date
, Поля created_at
а также updated_at
останется скрытым, когда вы вернетесь array
или же json
ответ или конвертировать object
в array
или же json
,