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,

Другие вопросы по тегам