Laravel 利用 observer 类基于状态属性,对进行删除和修改的控制

1 我们知道 Observer 类可以监听模型类的相关事件

1.1 creating, created, updating, updated, saving, saved, deleting, deleted etc.

1.2 利用这些事件,我们可以实现对删除和修改的控制

2 但是,如果判断的依据是本身属性时,这种方法就不妥了

2.1 比如,任务对象有一个状态属性,取值范围:进行中、已完成、已取消。

2.2 如果已完成,则不可删除,且不可修改。

2.3 矛盾来了,在不可修改的情况下,如何变更状态?

3 分析

3.1 Laravel 事件的侦听,基于单个模型,对于查询集合,它们是不会被触发的。

3.2 User::first()->save() (触发)User::where('user_id', 12)->update()  (不会触发)

4 矛盾解决方案

4.1 需要事件进行拦截的操作,采用单模型方式。

4.2 绕开事件的操作,采用集合操作方式。

4.3 比如,状态的转换操作,就采用集合方式,避开事件的侦听。

转载于:https://www.cnblogs.com/mouseleo/p/10663133.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值