[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自学中心 付费知识星球:破解面试:程序员的求职导师
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
282
粉丝
341
喜欢
561
收藏
1118
排名:61
访问:12.4 万
私信
所有博文
社区赞助商