50], [['path'], 'string', 'max' => 100], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'name' => 'Name', 'icon' => 'Icon', 'path' => 'Path', 'parent_id' => 'Parent ID', 'order_id' => 'Order ID', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } public function getMenus() { return $this->hasMany(MenuT::className(),['parent_id'=>'id']); } public function getParent() { return $this->hasOne(MenuT::className(),['id'=>'parent_id']); } public function getGroups() { return $this->hasMany(GroupT::className(),['id'=>'group_id']) ->viaTable('group_menu_t',['menu_id'=>'id']); } static public function getTree($parent_id=0,$level=0) { $items = MenuT::find() ->where('parent_id='.$parent_id) ->orderBy('order_id ASC') ->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,MenuT::getTree($item->id,$level+1)); $data = $tmp_data; } return $data; } }