Подсткажите как вывести в веджете категорий количество постов цифрой, чтобы родительская категория учитывала и дочернии категории.
Вот есть виджет
class CategoriesWidget extends Widget
{
/**
* @var Category
*/
public $category;
public $posts_count;
public function run()
{
$categories = Category::find()
->select(['{{%category}}.*', 'courses_count' => new Expression('COUNT(DISTINCT {{%post}}.id)')])
->joinWith(['posts'], false)
->groupBy('{{%category}}.id')
->orderBy('name')->all();
$items = $this->getItemsRecursive($categories, null, $this->category);
return $this->render('categories', [
'items' => $items,
]);
}
/**
* @var Category[] $categories
* @param integer $parentId
* @var Category $current
* @return array
*/
private function getItemsRecursive(&$categories, $parentId, $current)
{
$items = [];
foreach ($categories as $category) {
if ($category->parent_id == $parentId) {
$items[] = [
'label' => $category->name,
'template' => '<a href="{url}" class="list-group-item">{label}<small class="badge">'.$category->posts_count.'</small></a>',
'url' => ['main/category', 'id' => $category->id],
'active' => $this->category && $category->id == $this->category->id ? true : null,
'items' => $this->getItemsRecursive($categories, $category->id, $current),
];
}
}
return $items;
}
}
Все выводится, но в родительской категории указаны только свои посты, а посты дочерних категорий не указаны, как вывести общее количество постов?