不败君

前端萌新&初级后端攻城狮

Think PHP 获取用户的所有下级

Think PHP 获取用户的所有下级

2020-05-30 10:00:00

围观(2636)

博主在去年找工作面试中, 遇到了一个这样的问题, 最近项目开发也遇到了:

假如用户有很多个下级, 且这些下级并不是直属下级, 有可能是 "下级的下级" 也可能是 "下级的下级的下级" 下级是无限的, 所有的下级都可以继续招收下级.

那么问题来了, 怎么做到只查询一次数据库, 获取某个用户的所有下级.


博主的解决方法是, 使用家族谱.

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

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语