0侵入写model改变日志 咋写啊

最终想实现

时间 操作人 操作记录 IP host
YYYY-mm-dd admin 修改:[商品] 金额 10.00->22.00; unit 1->2
新增: [商品] 金额 11.00
删除:[user] [id:1]
8.8.8.8 内网ip或主机名
YYYY-mm-dd 系统(CLI) 修改: [订单] 状态 WAITING->PAY_SUCCESS 内网ip或主机名或job名称如/app/jobs/XXXJob

0侵入式

不改动(一行都不能动)当前系统现有逻辑(控制器、业务逻辑部分)、队列的前提下实现

问题

比如如果是一个异步任务,应该单个任务里的所有model新增、变动视为【一次[请求]】。不能视整个进程的生命周期为一次请求。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
2年前 评论
周小云 (楼主) 2年前
cevin (作者) 2年前
周小云 (楼主) 2年前
cevin (作者) 2年前
周小云 (楼主) 2年前
周小云 (楼主) 2年前
讨论数量: 16
2年前 评论
周小云 (楼主) 2年前
cevin (作者) 2年前
周小云 (楼主) 2年前
cevin (作者) 2年前
周小云 (楼主) 2年前
周小云 (楼主) 2年前

可以看看这个包
spatie.be/docs/laravel-activitylog...

class YourModel extends Model
{
    use  LogsActivity;

    protected $table = 'table_name';

    protected $guarded = [];

    protected static $logUnguarded = true;

    protected static $recordEvents = ['created', 'updated']; //model event 监听记录

    protected static $logOnlyDirty = true;

    protected static $logAttributes = [];
}

具体参数字段看文档

2年前 评论
周小云 (楼主) 2年前
周小云 (楼主) 2年前
dengxit (作者) 2年前
aab

粗暴一点的可以直接监听所有的事件,以及类似的事件,有个小问题就是最好使用同步事件

DB::listen('model.update: *', function () {});
2年前 评论

aop 参考hyperf aop文档

2年前 评论
周小云 (楼主) 2年前
周小云 (楼主) 2年前
markyanggang (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!