Lista categorii si subcategorii

Vreau sa implementez in site-ul meu categorii si subcategorii

Am facut tabelul mysql

CREATE TABLE `category` (
  `id` int(11) NOT NULL,
  `parent_id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(255) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

	$categoryIDs = $Database->query(sprintf('SELECT id FROM %s ORDER BY id ASC', Category\Attribute::TABLE));

	foreach($categoryIDs->fetchAll($Database::FETCH_COLUMN) as $categoryID) {
		$Category = Category\Factory::build($categoryID);
		$categoryAttributes[] = [
			'ID' => $Category->attr('id'),
			'NAME' => $Category->attr('name'),			
			'PARENT_ID' => $Category->attr('parent_id'),					
		];
	}
$FormTemplate->set('FORM', [ 'CATEGORY_LIST' => $categoryAttributes ??  []	 ]);

Am afisat toate categoriile

<?php foreach($FORM['CATEGORY_LIST'] as $category): ?>
<option value="<?=$category['ID']?>"><?=escapeHTML($category['ID'])?> [<?=$category['NAME']?>]</option>
<?php endforeach; ?>

Categoriile si subcategoriile sunt afisate in lista simpla

Cum as putea afisa in acest mod?
-Categorie
–sub categorie
—sub categorie
----sub categorie
-----sub categorie
-Categorie

nu ai nevoie si de o ordonare pentru afisare?

ps. eu as verifica si chestia asta: Nested set model - Wikipedia

HTML pune la dispozitie doar afisarea option-urilor dintr-un select doar pe 2 nivele, folosind optgroup. Daca vrei pe mai mult nivele atunci ori folosesti niste package-uri existente precum select2 ori faci o implementare custom in care, vizual, sa dea impresia de mai multe nivele (facand prepend la ceva caracter in fata pentru a marca nivelul), cand tu in spate o sa ai tot un simplu select sau poate chiar orice alt tag, folosind custom attributes si gestionand logica manual din JS.

Ai reusit sa rezolvi ?