第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

左樹右表如何算法實現(xiàn)

左樹右表如何算法實現(xiàn)

收到一只叮咚 2018-08-10 09:09:32
如圖我想實現(xiàn)點擊左邊的部門節(jié)點,右邊加載該部門的所有員工,包括子部門的所有員工。如上圖,點擊人事行政部可以顯示該部門人員,但是點擊上級部門,就無法顯示該部門下屬部門的所有員工。求算法!
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻1794條經(jīng)驗 獲得超8個贊

我自己用遞歸方法已經(jīng)實現(xiàn)了:

    public function getUsersTables($department)
    {        if($department == 1){
            $users = User::all();
            $users->map(function ($item, $key){                if ($item->status == 1){                    return $item->status = '正常';
                }else{                    return $item->status = '禁用';
                }
            });
            $users->map(function ($item, $key){                if ($item->confirmed == 1){                    return $item->confirmed = '已激活';
                }else{                    return $item->confirmed = '未激活';
                }
            });            return Datatables::of($users)->make(true);
        }else{            //獲取當前部門的所有員工對象
            $before = User::where('department_id', $department)->get();            foreach ($before as $item){
                array_push($this->child_users, $item);
            }            //調(diào)用遞歸方法獲取當前部門所有下屬部門的ID,并循環(huán)獲取所有部門ID的員工對象
            foreach ($this->getChildDepartment($department) as $department_id){
                $users = User::where('department_id', $department_id)->get();                foreach ($users as $user){
                    array_push($this->child_users, $user);
                }
            }
            $temp = collect($this->child_users);            if (isset($temp)){
                $temp->map(function ($item, $key){                    if ($item->status == 1){                        return $item->status = '正常';
                    }else{                        return $item->status = '禁用';
                    }
                });
                $temp->map(function ($item, $key){                    if ($item->confirmed ==1){                        return $item->confirmed = '已激活';
                    }else{                        return $item->confirmed = '未激活';
                    }
                });                return Datatables::of($temp)->make(true);
            }
        }
    }    
    /**
     * 遞歸方式獲取當前被選部門下所有子部門ID
     * @param $parent_id
     * @return array
     */
    public function getChildDepartment($parent_id)
    {        //獲取該部門ID所有下屬部門ID
        $child_id = DB::table('departments')->select('id')->where('parent_id', $parent_id)->get();

        $temp = collect($child_id);        //如果集合為空,則返回子部門數(shù)組,否則繼續(xù)獲取當前部門集合中下屬部門ID
        if ($temp->isEmpty()){            return $this->departments;
        }else{            foreach ($child_id as $id){
                array_push($this->departments, $id->id);                $this->getChildDepartment($id->id);
            }
        }        return $this->departments;
    }

性能方面可能還有很多需要調(diào)優(yōu)的地方,等有空再弄吧……


查看完整回答
反對 回復 2018-09-20
  • 1 回答
  • 0 關(guān)注
  • 797 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號