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图。

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章