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

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

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

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

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

$history = History::where('user_id', >, 0)->get();
本作品采用《CC 协议》,转载必须注明作者和本文链接
大多数知识,不需要我们记住,只需要认知即可
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3
颠倒的玉石

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

3年前 评论

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

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

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

3年前 评论

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