表結構如上 總代理 的 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圖。