public function getChildren()
{
$result = $this->hasMany($this->className(), ["pid" => "id"]);
$result->orderBy(["priority" => SORT_ASC]);
return $result;
}
/** * @param Tree $tree * @return array */ public function getAllIdsForChildren(Tree $tree) { $treeIds = []; /** * @var $query ActiveQuery */ $childrens = $tree->getChildren()->with('children')->all(); if ($childrens) { foreach ($childrens as $chidren) { if ($chidren->children) { $treeIds[$chidren->id] = $chidren->id; $treeIds = array_merge($treeIds, $this->getAllIdsForChildren($chidren)); } else { $treeIds[$chidren->id] = $chidren->id; } } } return $treeIds; }