删除会员的优雅方式,避免留存脏数据
我们在做项目的时候,一般在初期就会建立好账号体系,后来随着需求的增多,可能会忽略这个模块。
当我们要做删除用户功能时,可能考虑的比较全面,需要把已有的业务逻辑,连同用户一起删除。
但是后续的需求,再增加用户关联数据的时候,可能会遗漏掉删除用户这种情况。这样的话,我们就避免不了在业务代码中插入这种查询
$history = History::has('user')->get();
为了避免这种情况的发生,我们可以在项目中增加一个删除用户的事件,以后如果有需要删除用户相关业务数据的时候,只需要修改 EventServiceProvider
文件即可。这样做的好处就是,与你之前建立的账号删除功能 解耦 ,你不需要回顾之前账号系统中的一些逻辑,只需要专注你当前在做的功能即可。
然后我们的业务代码,可以改成:
$history = History::where('user_id', >, 0)->get();
本作品采用《CC 协议》,转载必须注明作者和本文链接
真的要全部清除的话,弄个触发器也可以 :joy: :joy:
直接建立一个
UserObserver
,监听deleted
更简单清晰吧!直接用MySQL里面的外键?级连删除