@microf

Как вывести категории?

Добрый день. Очень простой вопрос, так сказать основы основ, но что-то я туплю.
Есть две таблицы
Category
| id | parent_id | name
и
Articles
| id | title | cat_id |
cat_id связанная с category.id

Мне нужно вывести все категории и статьи на одной странице без всяких кликов, т.е.
Заголовок1
Подзаголовок1
Статья1
Статья2
Подзаголовок2
Статья3
Статья4
Заголовок2
....
Как понимаю, мне в контроллере надо получить несколько массивов с категориями, подкатегориями и статьями, чтобы передать во view/index и там так же выводить foreach. Как это сделать?
public function actionArticle() {
$cats = Category::find()->all();
foreach ($cats as $c => $cat) {

И тут у меня загвоздка

} }
  • Вопрос задан
  • 2540 просмотров
Пригласить эксперта
Ответы на вопрос 2
reffy
@reffy
Я молодец.
Честно говоря я не понял ваш вопрос. Что ещё за заголовок, подзаголовок и т.д.

Если надо вывести список категорий и список статей (в каком порядке не было задано), то получайте список категорий и список статей, а потом выводите:
// контроллер
public function actionArticle() {
    $categories = Category::find->all();
    $articles = Articles::find->all();

    return $this->render('article', [
        'categories' => $categories,
        'articles' => $articles
    ]);
}

// вьюха article.php
<?php
foreach ($categories as $category) {
    echo $category->name;
}

foreach ($articles as $article) {
    echo $article->name;
    echo $article->someone;
    echo $article->id;
}

Может где ошибся в коде, пишу с планшета прям тут.
Ответ написан
copist
@copist
Empower people to give
1. В контролере выбрать из базы все категории, упорядочить в памяти их иерархию, передать в представление. А в представлении вывести категории + их статьи, пользуясь отношениями, описанными в моделях
Документация про организацию отношений между моделями в Yii
(!) Но это подойдёт только для небольшого объёма данных, потому что иначе потребуется память для сортировки категорий + отдельные SQL запросы на поиск статей по каждой категории.

2. Для большого объёма данных от реализации иерархии через parent-child надо отказаться в пользу nested sets. Реализация nested set для Yii (не проверял её правильность, но 51 форк говорит сам за себя ;) )
Ответ написан
Ваш ответ на вопрос

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

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