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

在這裏插入圖片描述

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