[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 如何自动维护创建人创建时间 更新人 更新时间

其他提示:关于 FastAdmin 对数据表时间字段不能自动维护的解决办法#

在 FastAdmin 框架基于 ThinkPHP 的模型中,当数据表包含 updatetime 和 createtime 两个 datetime 类型的时间字段时,一键 CRUD 操作可能出现问题。为确保自动维护这些字段,需在模型中将 $autoWriteTimestamp 属性设置为 datetime,并设置 $dateFormat 为 Y-m-dH:i:s,以匹配数据表定义并正确处理时间格式。

在使用 FastAdmin 开发框架时,如果数据表中存在 updatetime 和 createtime 两个时间字段,会在添加数据和更新数据时自动维护这两个字段,不需要手动维护,这其实是 ThinkPHP 模型中的功能。

[fastadmin]第二十七篇 fastadmin 如何自动维护创建人创建时间 更新人 更新时间

这两个字段的数据类型支持 bigint 和 datetime 类型,但是如果字段使用的是 datetime 类型,在使用一键 CRUD 时,生成的增删改查在维护时间字段时,会出现问题。

需要修改模型中的两个属性:

自动写入时间戳字段的配置生成后默认是 integer ,需改为 datetime ,和数据表中的数据类型一致。

// 自动写入时间戳字段
protected $autoWriteTimestamp = 'datetime';

增加时间字段取出后的默认时间格式属性:

protected $dateFormat = 'Y-m-d H:i:s';

完成这两处的修改即可自动维护添加时间和更新时间字段。

本作品采用《CC 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海 PHP 自学中心
wangchunbo
司机 @ 某医疗行业
文章
307
粉丝
352
喜欢
565
收藏
1130
排名:61
访问:12.5 万
私信
所有博文
社区赞助商