Select multi level výpis do formuláře

jAkErCZ
Člen | 321
+
0
-

Zdravím,
Snažím se zprovoznit select multi level.

Zatím sem došel do fáze kdy mám toto:

private function formatReasons($reasons, $parentId) {
      $tree = array(); // Vytvoříme prázdný strom
      // Pokusíme se najít položky, které patří do rodičovské kategorie ($parentId)
      foreach ($reasons as $reason) {
          if ($reason->parent_reason_id == $parentId) {
              // Položku přidáme do nového stromu a rekurzivně přidáme strom podpoložek
              $tree[$reason->title] = [
                  $reason->reason_id => $reason->title
              ];
          }
      }

      bdump($tree);
      return $tree; // Vrátíme hotový strom
  }

  public function getReasons($showAll = false)
  {
      $reasons = $this->database->table('reason'); // Získá seznam kategorií z databáze.
      if (!$showAll)
          $reasons->where('NOT hidden'); // Schová skyté komentáře
      $reasons->order('order_no'); // Seřadí výsledek.
      return $this->formatReasons($reasons->fetchAll(), null); // Vratí výsledný strom.*/
  }

A to vrací

NÁHLED

DB:

DROP TABLE IF EXISTS `reason`;
CREATE TABLE `reason` (
  `reason_id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) COLLATE utf8_czech_ci NOT NULL,
  `order_no` int(11) NOT NULL,
  `hidden` tinyint(4) NOT NULL,
  `parent_reason_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`reason_id`),
  KEY `perrent_reason_id` (`parent_reason_id`),
  CONSTRAINT `reason_ibfk_1` FOREIGN KEY (`parent_reason_id`) REFERENCES `reason` (`reason_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

Jak co nejefektivněji mám tedy vrátit select level?

Díky