删除会员的优雅方式,避免留存脏数据

我们在做项目的时候,一般在初期就会建立好账号体系,后来随着需求的增多,可能会忽略这个模块。
当我们要做删除用户功能时,可能考虑的比较全面,需要把已有的业务逻辑,连同用户一起删除。
但是后续的需求,再增加用户关联数据的时候,可能会遗漏掉删除用户这种情况。这样的话,我们就避免不了在业务代码中插入这种查询

$history = History::has('user')->get();

为了避免这种情况的发生,我们可以在项目中增加一个删除用户的事件,以后如果有需要删除用户相关业务数据的时候,只需要修改 EventServiceProvider 文件即可。这样做的好处就是,与你之前建立的账号删除功能 解耦 ,你不需要回顾之前账号系统中的一些逻辑,只需要专注你当前在做的功能即可。

然后我们的业务代码,可以改成:

$history = History::where('user_id', >, 0)->get();
本作品采用《CC 协议》,转载必须注明作者和本文链接
大多数知识,不需要我们记住,只需要认知即可
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
颠倒的玉石

真的要全部清除的话,弄个触发器也可以 :joy: :joy:

3年前 评论

直接建立一个 UserObserver,监听 deleted 更简单清晰吧!

3年前 评论
tu6ge-php (楼主) 3年前

直接用MySQL里面的外键?级连删除

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!