@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Как правильно сделать Подсчёт кол-ва элементов для статистики?

5ae2b47c872ef914177630.jpeg

В общем хочу вывести в дерево сколько каких услуг было заказано и каких категорий.

3 таблицы.
category (id , name, description )price (id cateory_id name unit ptice) и Orders (id category_id price_id name telephone date processed)

Само дерево я построил относительно моделей

<div class="panel-body">
                                        <p>Всего заказов : 43<br>
                                            <hr>
                                        <?php echo '<pre>'. print_r($orders, true).'</pre>'?>
                                        Из них:<br>
                                        <?php  foreach ($cat as $item) :?>
                                        <ul class="treeview">

                                            <?php if ($item['id'] !=  17): ?>
                                            <li><a href="#"><?=$item['name']?> - 3</a>
                                                <ul>
                                            <?php  foreach ($price 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; ?>

                                    </div>


Но теперь хочу чтобы рядом с каждой категорией и услугой было количество заказов(В будущем с границами даты)

Пробовал пихать форич творится дичь. Таблицы все связаны
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Arik
Тоже столкнулся с такой проблемой, но у меня дерево из 4-5 уровней, разные варианты разобрал, но остановился просто на отдельных запросах
1.
$query = Product::find();
$query->select(['category_id', 'count' => 'count(`id`)']);
$query->visible();
$query->andWhere(['category_id' => $categoryIds]);
$query->groupBy('category_id');
$query->asArray();

Получили сколько продуктов у каждого раздела

2. Запрос всего дерево в обратном порядке, чтоб последние элементы были потомками, затем простым циклом обходил все дерево и добавлял кол-во элементов, если менялся уровень или родитель то сброс
Ответ написан
Создаете свойство $ordersCount в моделе категории, дописываете запрос к бд (LEFT JOIN и COUNT()) таким образом чтобы количество заказов категории было приравнено ordersCount, далее это свойство выводите в таблице.
Ответ написан
Ваш ответ на вопрос

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

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