/** * Retrieves query builder for root (with no ancestors) models. * * @return \Franzose\ClosureTable\Extensions\Collection */ public static function collectRoots() { /** * @var Entity $instance */ $instance = new static(); return $instance->whereNull($instance->getParentIdColumn()); }
/** * Retrieves root (with no ancestors) models. * * @param array $columns * @return \Franzose\ClosureTable\Extensions\Collection */ public static function getRoots(array $columns = ['*']) { /** * @var Entity $instance */ $instance = new static(); return $instance->whereNull($instance->getParentIdColumn())->get($columns); }
/** * Retrieves entire tree. * * @param array $columns * @return \Franzose\ClosureTable\Extensions\Collection */ public static function getTree(array $columns = ['*']) { /** * @var Entity $instance */ $instance = new static(); return $instance->orderBy($instance->getParentIdColumn())->orderBy($instance->getPositionColumn())->get($instance->prepareTreeQueryColumns($columns))->toTree(); }