50], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'name' => 'Name', 'company_id' => 'Company ID', 'parent_id' => 'Parent ID', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } public function getDepartments() { return $this->hasMany(DepartmentT::className(),['parent_id'=>'id']); } static public function getTree($company_id=0,$parent_id=0,$level=0) { $items = DepartmentT::find() ->where('parent_id='.$parent_id.' and company_id='.$company_id) ->all(); $data = array(); foreach($items as $item) { $tmp_str = ''; if($level > 1) $tmp_str .= str_repeat('  ',$level-1); if($level > 0) $tmp_str .= str_repeat('  ',1); $tmp_str .= $item->name; $item->name = $tmp_str; $data[] = $item; $tmp_data = array_merge($data,DepartmentT::getTree($company_id,$item->id,$level+1)); $data = $tmp_data; } return $data; } public function hasChild($id) { $items = DepartmentT::getTree($this->company_id,$this->id); foreach($items as $item) { if($item->id == $id) return true; } return false; } public function getCompany() { return $this->hasOne(CompanyT::className(),['id'=>'company_id']); } }