表结构如上 总代理 的 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图。