2020-05-30 10:00:00
围观(5641)
博主在去年找工作面试中, 遇到了一个这样的问题, 最近项目开发也遇到了:
假如用户有很多个下级, 且这些下级并不是直属下级, 有可能是 "下级的下级" 也可能是 "下级的下级的下级" 下级是无限的, 所有的下级都可以继续招收下级.
那么问题来了, 怎么做到只查询一次数据库, 获取某个用户的所有下级.
博主的解决方法是, 使用家族谱.
A 用户自行注册, 所以家族谱是他自己的用户 ID, 即存库时该用户的家族谱是 |1|
B 用户注册, 邀请人是 A 用户, 此时需要将 A 用户的家族谱再加上自己的用户 ID, 即为 |1|2|
C 用户注册, 邀请人是 B 用户, 此时将 B用户的家族谱再加上自己的用户 ID, 即为 |1|2|3|
此时需要 A 用户的下级, 只需要在模型这样:
public function getAllSubordinate($user_id) { // user_id 变量为 A 用户的 ID // 当前用户 需要查询下级的用户 $row_user = $this->where('user_id', $user_id)->find(); $rows_user = $this->where('family_ids', 'like', "{$row_user['family_ids']}%"); dd($rows_user); // 这里就是全部下级了 }
其实非常简单, 只是用了模糊查询以及用户注册的时候做家族谱处理.
本文地址 : bubaijun.com/page.php?id=186
版权声明 : 未经允许禁止转载!
上一篇文章: 使用ngrok公开本地网站
下一篇文章: 博客文章被采集(爬取)搬运