Есть две таблицы - post и category.
Имеется связь OneToMany [category.id -> post.category_id], то есть у нескольких постов может быть одна категория, а у одной категории может быть несколько постов.
Мне нужно получить 4 категории и 4 связанных с этой категорией поста. Посты отсортированы по убыванию количества просмотров(post.views). Категории отсортированы по убыванию суммы просмотров постов данной категории.
Я понятия не имею, как это сделать. Всё что имею:
$categories = Category::find()
->joinWith('posts p')
->where(['=', 'p.status', Post::STATUS_PUBLISH])
->limit(4)
->all();
Код связи:
public function getPosts()
{
return $this->hasMany(Post::class, ['category_id' => 'id']);
}
Помогите, пожалуйста!