@Dream2140

Вывести все родительские категории?

Новичок в yii и многие вещи ещё постигаю.
У меня есть категории товаров а у этих категорий есть свои подкатегории( к примеру категория "Электроника", имеет подкатегорию "Смартфоны"), все категории лежать в одной таблице и ничем друг от друга не отличаются кроме как тем что у подкатегорий есть поле "parent_id":60224cb711ae9082794375.png
Мне нужно сделать таблицу, где я вывожу названия всех категорий, и в отдельной строке указываю их родительские категории. И тут возникает несколько вопросов:
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) Сейчас я делаю это в виде. Это норма? Или я все же должен это как то делать через контроллер?
П.С. сори если запутанно буду рад любой помощи, если нужно уточнение пишете, постараюсь быстро ответить
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ответы на вопрос 1
На всякий случай: есть некоторое количество готовых расширений для работы с Adjacency List - например это.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы