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

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

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

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

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);  // 这里就是全部下级了

}

其实非常简单, 只是用了模糊查询以及用户注册的时候做家族谱处理.

php查询当前用户所有下级,Think PHP 获取用户的所有下级相关推荐

  1. Android实战——第三方服务之Bmob后端云的集成、用户登陆、用户注册、获取用户、用户注销(一)

    第三方服务之Bmob后端云的集成.用户登陆.用户注册.获取用户.用户注销(一) Bmob简介: 步骤一:Bmob集成 在www.bmob.cn注册一个用户,在网站后台创建一个应用,进去管理页面之后在设 ...

  2. tp5微信公众号获取用户openid_tp5+微信公众号获取用户基本信息

    获取用户基本信息(UnionID机制) 获取用户基本信息(UnionID机制) 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯 ...

  3. html怎样获取用户手机号码,小程序如何获取用户手机号?

    在小程序获客过程中,我们有非常多的应用场景希望获取当前访客的手机号,通过小程序提供的这一便利功能,可以大大增强我们的营销效果. 在小程序中,获取手机号有下面两种方式: 一.用户进入首页(或某一页面), ...

  4. 小程序获取用户头像大图 小程序获取用户头像模糊的问题 小程序自定义转发头像模糊 小程序自定义转发分享大图...

    在开发小程序的时候,大家肯定有做过自定义转发分享图片的.我们现在做了一个名片小程序,需要做的一个功能就是,用户在转发分享自己的名片,在微信里显示的小程序缩略图,我们使用的是用户的微信头像,但是发现一个 ...

  5. php公众号用户关注,微信公众号获取用户信息(用户关注公众号)

    一 获取用户基本信息 用户在关注公众号之后,你可以获取到用户的openID(加密后的微信号,每个用户对应每个公众号的openID是唯一的).通过openID可以获取到包括昵称.头像.性别.所在城市.语 ...

  6. php用户抽奖次数怎么做,获取用户剩余抽奖次数

    # 获取用户剩余抽奖次数 user/queryRemainNum >[info] 此 API 用于获取用户在抽奖工坊中剩余的抽奖次数. ## **API 地址** >[info] http ...

  7. android获取app用户数据,Android 原生app获取用户授权访问Autodesk云应用数据

    oAuth机制对于网站间的授权管理是很容易实现的,设置好app回调端口,当数据服务提供方拿到其用户授权,则返回授权码发送到回调端口.上一篇文章介绍了如何授权Forge app访问Autodesk 云应 ...

  8. php获取微信小程序用户头像,微信小程序获取用户头像+昵称+openid,小程序登录!附前端后端源码!...

    做一款小程序,如果需要判断用户,当然要获取一些基本信息,例如头像,昵称,openid.所以本次案例就直接上代码了. 小程序前端 index.wxml 获取头像昵称 {{userInfo.nickNam ...

  9. JS获取按键的代码,Js如何屏蔽用户的按键,Js获取用户按键对应的ASII码(兼容所有浏览器)...

    http://huazi.tcreator.info 原文网址:http://www.phpernote.com/javascript-function/297.html 在使用JavaScript做 ...

最新文章

  1. AD5933使用外部时钟获得更低的分析频率
  2. RESTful Web 服务 - 无状态
  3. python中分割字符串两种方法正则分组别名,如何在python中使用正则表达式模块将文本字符串分割成单词?...
  4. 如何删除JAVA集合中的元素
  5. LeetCode 1150. 检查一个数是否在数组中占绝大多数(二分查找)
  6. [译]MediaSession MediaController – Android TV 应用开发教程九
  7. 微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题
  8. 文化艺术报新闻报道IT诗人(转)
  9. 解决Unable to find taglib [cr] for URI: [WBE-INF/tlds/testlib.tld]] with root cause的可能性方案
  10. 自动化脚本任务计划程序(Windows)
  11. c语言输入若干学生成绩 计算平均,从键盘输入若干名学生的成绩,当输入-1时结束,统计出及格人数...
  12. 什么是黎曼和?什么是定积分?
  13. 程序的优化 文字的减法
  14. 什么是优先级反转及解决方法
  15. sql server数据库练习
  16. 支付宝运营10元花呗红包活动被薅羊毛了
  17. 互联网创业如何起步(一)
  18. MISRA-C 2019
  19. seamless clone
  20. 现代A200(MoboDA3360)玩家宝典

热门文章

  1. 梁储定郊外,为官正派-太子少保南京吏部尚书记
  2. redis server服务端启动流程分析(一)
  3. 多媒体技术是利用计算机对文本图形,四川自考07311《多媒体技术》全真模拟试题(三)...
  4. mysql驱动如何编写_解读MySQL驱动加载逻辑
  5. java 方法的入口地址_Java 方法
  6. Sybase数据库数据导入导出命令
  7. linux apache tomcat ajp,详解Tomcat HTTP协议与AJP协议 | 《Linux就该这么学》
  8. java对接支付宝小程序支付
  9. [Unity3D]Unity3D游戏开发之从Unity3D到Eclipse
  10. CSS布局之浮动和定位