[fastadmin]第二十七篇 fastadmin 如何自动维护创建人创建时间 更新人 更新时间
背景需求
我要给一个表增加 字段,维护创建人 时间 更新人 时间。
sql 修改
ALTER TABLE yy_ypdj
ADD COLUMN created_time
int(10) DEFAULT NULL COMMENT ‘创建时间’,
ADD COLUMN created_by
VARCHAR(255) NULL COMMENT ‘创建人’,
ADD COLUMN updated_time
int(10) DEFAULT NULL COMMENT ‘更新时间’,
ADD COLUMN updated_by
VARCHAR(255) NULL COMMENT ‘更新人’;
model 修改
时间 自动更新
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'created_time';
protected $updateTime = 'updated_time';
自动更新uid
// 定义自动完成的属性
protected $insert = ['created_by'];
protected $update = ['updated_by'];
protected function setCreatedByAttr()
{
// 这里应从session或其他认证机制中获取当前用户ID
// return $this->auth->id;
return session('admin.id'); // 示例获取当前登录用户ID
}
protected function setUpdatedByAttr()
{
// return $this->auth->id;
// 这里应从session或其他认证机制中获取当前用户ID
return session('admin.id'); // 示例获取当前登录用户ID
}
效果测试
其他提示:关于 FastAdmin 对数据表时间字段不能自动维护的解决办法
在FastAdmin框架基于ThinkPHP的模型中,当数据表包含updatetime和createtime两个datetime类型的时间字段时,一键CRUD操作可能出现问题。为确保自动维护这些字段,需在模型中将$autoWriteTimestamp属性设置为datetime,并设置$dateFormat为Y-m-dHs,以匹配数据表定义并正确处理时间格式。
在使用 FastAdmin 开发框架时,如果数据表中存在 updatetime 和 createtime 两个时间字段,会在添加数据和更新数据时自动维护这两个字段,不需要手动维护,这其实是 ThinkPHP 模型中的功能。
这两个字段的数据类型支持 bigint 和 datetime 类型,但是如果字段使用的是 datetime 类型,在使用一键 CRUD 时,生成的增删改查在维护时间字段时,会出现问题。
需要修改模型中的两个属性:
自动写入时间戳字段的配置生成后默认是 integer ,需改为 datetime ,和数据表中的数据类型一致。
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'datetime';
增加时间字段取出后的默认时间格式属性:
protected $dateFormat = 'Y-m-d H:i:s';
完成这两处的修改即可自动维护添加时间和更新时间字段。
本作品采用《CC 协议》,转载必须注明作者和本文链接