Есть база со статьями. У каждой статьи есть дата создания в формате 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();
Какой из них правильней подвергать перебору?