我正在尝试重命名数据库中created_at
表的时间戳列(updated_at
和user
)。我已经看过this answer但是当我覆盖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
。数据库列保持不变。如何在保留自动更新功能的同时重命名数据库的列?
感谢您的帮助。
答案 0 :(得分:2)
您需要在using (student_id, data_id)
更新用户表转移文件,它将是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();
您需要再次运行迁移,请确保备份数据,因为这将删除表并重新创建它们。
希望这有帮助。
答案 1 :(得分:1)
您可以使用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
将保持隐藏状态。