记录laravel orm trait加载小技巧

PHP   2024-03-16 09:03   165   0  

因为某些时候需要在很多model里面加入一些保存前保存后的事件
比如

  • created_by updated_by 字段自动维护

这种情况头一次想的是用 observer
或者直接监听 model 保存新增事件

机缘巧合下看到一篇文章 关于laravel orm加载trait的技巧 原文

实现方案

// app/Model/Traits/UserStamps
trait Usertamps{
        public static function bootUserStamps()
        {
            static::creating(function (Model $model) {
                // 设置 created_by 字段的值为当前登录的用户ID
                $model->created_by = auth()->id();
            });

            static::updating(function (Model $model) {
                // 设置 updated_by 字段的值为当前登录的用户ID
                $model->updated_by = auth()->id();
            });
        }
}

这样只需要在用到的model直接use这个类即可。

大概语法是

  • initializeUserStamps 每次实例化新模型的时候都会调用
  • bootUserStamps 这个应该是类似与 model::booted()里面执行
欲买桂花同载酒,终不似,少年游
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。
闲言碎语
贫穷限制了我那么多,为什么没有限制我的体重?
赞赏支持

如果觉得博客文章对您有帮助,异或土豪有钱任性,可以通过以下扫码向我捐助。也可以动动手指,帮我分享和传播。您的肯定,是我不懈努力的动力!感谢各位亲~