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 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
3年前 评论
周小云 (楼主) 3年前
cevin (作者) 3年前
周小云 (楼主) 3年前
cevin (作者) 3年前
周小云 (楼主) 3年前
周小云 (楼主) 3年前
讨论数量: 16
3年前 评论
周小云 (楼主) 3年前
cevin (作者) 3年前
周小云 (楼主) 3年前
cevin (作者) 3年前
周小云 (楼主) 3年前
周小云 (楼主) 3年前

可以看看这个包
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 = [];
}

具体参数字段看文档

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

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

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

aop 参考hyperf aop文档

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

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