Laravel 模型脏检测
Laravel ORM 有一套追踪机制,对应于模型从内存中到持久化状态的各种事件1。在我看来,这就像是一种 hook 机制,开发者可以达到更精确地监测(监视)模型的变动。比如,我需要监控一下某个属性值的改动,然后发出警报或者记录日志,甚至可以以抛异常的方式拒绝非法修改。
另外需注意,更新事件只会在直接修改模型时出发,而不是通过构建查询修改时触发2。也就是说,只对单个模型有效,而不是作用于条件查询出来的结果集,或者说不能作用于 QueryBuilder 对象。
References
- https://www.leewillis.co.uk/custom-model-events-laravel/.
- https://github.com/laravel/framework/issues/11777#issuecomment-170384117.
- https://www.larashout.com/how-to-use-laravel-model-observers "How To Use Laravel Model Observers | LaraShout".