Чтобы построить запрос в Yii2, который будет извлекать по одной записи из каждой категории, вам потребуется использовать группировку и подзапросы.
Предположим, у вас есть модель "Category" с полем "id" и модель "Post" с полем "category_id", которое связано с полем "id" в модели "Category".
Вот как может выглядеть код для создания такого запроса:
use yiidbQuery; $query = new Query(); $query->select('p.*') ->from('post p') ->innerJoin('( SELECT MIN(id) AS id FROM category c GROUP BY c.id ) c', 'p.category_id = c.id'); $posts = $query->all();
Этот код использует подзапрос, который выбирает минимальное значение "id" из каждой категории и группирует записи по "category_id".
Затем основной запрос выбирает все поля из таблицы "post" (обозначенной как "p") и объединяется с подзапросом по полю "category_id".
Результирующий набор данных будет содержать по одной записи из каждой категории.
Также учтите, что вам может понадобиться настроить связь между моделями "Category" и "Post" в соответствии с вашей таблицей базы данных, чтобы использовать их в коде выше.