@BarneyGumble

Как на PHP (Yii2) лучше организовать древовидный вывод дат (год, месяц) статей вместе с их количеством?

Есть база со статьями. У каждой статьи есть дата создания в формате YYYY-MM-DD.

Из базы

Необходимо древовидно вывести ссылки для фильтра статей по датам, чтобы выглядело примерно так:

2018
Август (9)
Октябрь (3)
Декабрь (1)

2017
Январь (12)
Март (3)
Июль (5)

2016
Июнь (4)
Октябрь (7)
Декабрь (2)

Как это лучше реализовать?

Когда была задача вывести просто в рамках одного года месяцы, я решил её так:

<?php 
       foreach($dates as $date) {
             $monthsArray[] = Yii::$app->formatter->asDate($date->date, 'M');   
        }    
       $monthsUniqueArray = array_count_values ($monthsArray);
 ?>

<?php foreach( $monthsUniqueArray as $key => $value):?>
        <p><a href="<?= Url::toRoute(['site/index', 'date'=>$key]);?>"><?=$key?></a> <small class="text-muted"><?=$value?></small></p>
<?php endforeach; ?>


Но, очевидно, что это чопорное и не универсальное решение. Когда появились годы, я что-то залип(

Из базы есть возможность получить как массив дат:
$dates = Articles::find()->select('date')->all();
Так и массив статей с датами:
$articles = Articles::find()->all();

Какой из них правильней подвергать перебору?
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Нужен запрос в БД с группировкой по месяцу, если дата в базе в виде числа - сочувствую.
Курительная страничка: https://yandex.ru/search/?text=mysql%20group%20by%...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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