Laravel: Изменить имена временных меток в базе данных - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь переименовать столбцы меток времени (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 ]

0 голосов
/ 09 мая 2018

Вам нужно обновить файл миграции таблицы пользователей в 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();
});

Вам нужно будет снова запустить миграцию, убедитесь, что вы создали резервную копию данных, так как это приведет к удалению таблицы и ее повторному созданию.

Надеюсь, это поможет.

0 голосов
/ 09 мая 2018

Вы можете использовать атрибуты 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.

...