thinkphp 写递归查询 查询无限下级代理

在这里插入图片描述
表结构如上 总代理 的 superiors字段是为null的,接口 token解密之后,取里面的user_id,然后拿到software软件ID,我们再开始进行递归

先拿到 user_id等于接口中token携带的user_id的数据,通常这个数据第一个查到的是总代理,或者是当前登陆的代理账号。

function select($menber, $software){
    $obj = Db::table('v_auth_software')->where([
        'user_id' => (string)$menber['user_id'],
        'software' => $software
    ])->select()->each(function ($item) {
        return $item;
    });
}
$post = [];
$menber = [];
$menber['user_id'] = '18027046690';
$post['software'] = 17;
select($menber, $post['software'])        

现在完成了 字段user_id的查询

第二步做 superiors的查询:

function select($menber, $software)
 {

     $obj = Db::table('v_auth_software')->where([
         'user_id' => (string)$menber['user_id'],
         'software' => $software
     ])->select()->each(function ($item) {
         return $item;
     });
     $child = [];
     foreach ($obj as $val) {
         $arr = Db::table('v_auth_software')->where('superiors', (string)$val['user_id'])->select()->each(function ($item) {
             return $item;
         });
         $newArr = [];
         foreach ($arr as $items) {
             $items['children'] = select($items, $software)[0];
             $newArr[] = $items;
         }
         $child[] = $newArr;
     }
     return $child;
 }
$post = [];
$menber = [];
$menber['user_id'] = '18027046690';
$post['software'] = 17;
select($menber, $post['software']) 

然后已经完成递归查询了,
这个不仅仅用与代理层级附属关系查询,也可以用来做评论消息查询、菜单查询等…
附上查询后返回的json图。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值