Новичок в yii и многие вещи ещё постигаю.
У меня есть категории товаров а у этих категорий есть свои подкатегории( к примеру категория "Электроника", имеет подкатегорию "Смартфоны"), все категории лежать в одной таблице и ничем друг от друга не отличаются кроме как тем что у подкатегорий есть поле "parent_id":

Мне нужно сделать таблицу, где я вывожу названия всех категорий, и в отдельной строке указываю их родительские категории. И тут возникает несколько вопросов:
1) Вот как я это сделал, реализация рабочая, но я очень сомневаюсь что синтаксически правильная, как это можно сделать проще, ну или право с точки зрения канонов yii. Код в виде show.php контроллера categories:
<?php foreach($categories as $category): ?>
<tr>
<td><?= $category->id ?> </td>
<td><?= $category->name ?> </td>
<td><?php
if($parents=$category->id_parent){ // проверяю есть ли родительская категория
$parents=explode(",", $parents); // в бд родительские id лежат как строка, преобразую к масиву
$parents_name= Categories::findAll($parents); // нахожу все категории с такими id
foreach ($parents_name as $name){
echo $name->name.' '; // ну и вывод имен
}
}else{
echo '-'; //если нету родительской категории, то просто прочерк
}
?> </td>
Код в контроллере
public function actionShow(){
$categories= Categories::find()->all();
return $this->render('show', compact('categories'));
}
2) Сейчас я делаю это в виде. Это норма? Или я все же должен это как то делать через контроллер?
П.С. сори если запутанно буду рад любой помощи, если нужно уточнение пишете, постараюсь быстро ответить