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

Posted mouseleo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 比如,状态的转换操作,就采用集合方式,避开事件的侦听。

以上是关于Laravel 利用 observer 类基于状态属性,对进行删除和修改的控制的主要内容,如果未能解决你的问题,请参考以下文章

利用Java提供的Observer接口和Observable类实现观察者模式

Two 观察者 observer pattern

深入 Laravel 内核之观察者模式

php Laravel Observer配置

php Laravel Observer内核

很简单的mobx状态管理工具