Encoderast
@Encoderast
frontend пытается что-то делать в backend

Yii2 -> Вывод двух массивов foreach?

Пытаюсь вывести категории и к ним же сразу товары

Есть контроллер:

$categories = Category::find()->where(['parent_id' => $id, 'status' => '1'])->indexBy('id')->all();
        
        $categoryIds = array_keys($categories);

        $categoryIds[] = $id;
        
        $products = Product::find()->where(['category_id' => $categoryIds, 'status' => '1'])->addOrderBy('id DESC');


Есть вьюха

<?php foreach ($categories as $one) {
            echo '<h2>', $one->name; echo '</h2>';
            foreach ($one->? as $prod) {
                $prod->name;
            }
        }?>


Как надо написать чтоб к каждой категории выводились свои товары

5adf293d4c562411024715.jpeg
  • Вопрос задан
  • 841 просмотр
Решения вопроса 2
qonand
@qonand
Software Engineer
Не изобретайте велосипед. Ваш код можно и нужно просто реализовать с помощью реляции и жадной загрузки
Ответ написан
Комментировать
@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)
Если это 2 таблицы. связанные один ко многим.

То в контроллере например
public function actionStat()
    {
        $mass1 = Category::find()->asArray()->all();
        $mass2= Price::find()->asArray()->all();
        return $this->render('stat' , compact('mass1', 'mass2'));
    }


А во вьюхе уже (Пример со списком)

<?php  foreach ($mass1 as $item) :?>
                                            <ul class="treeview">
                                                <?php if ($item['id'] !=  17): ?>
                                                    <li><a href="#"><?=$item['name']?> - 3</a>
                                                        <ul>
                                                            <?php  foreach ($mass2 as $itemok) :?>
                                                                <?php if ($item['id'] ==  $itemok['category_id']): ?>
                                                                    <li><a href="#"><?=$itemok['name']?></a></li>
                                                                <?php endif; ?>
                                                            <?php endforeach; ?>
                                                        </ul>
                                                    </li>
                                                <?php endif; ?>
                                            </ul>
                                        <?php endforeach; ?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вы содержание массивов покажите, не понятно же что в них, как связаны? Но могу подкинуть идею абстрактную:
foreach($product as $p){
   echo $category[$p->cat_id]['name'];
   echo $p->name;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы