php, построение вложенных запросов с помощью фреймворка yii2
изучаю фреймворк yii2 для написания скриптов по автоматизации запросов в бд. с простыми запросами все понятно - если имеем, например, следующий запрос:
SELECT id, email
FROM user
WHERE last_name = :last_name
LIMIT 10;
то на php его построитель будет выглядеть следующим образом:
$rows = (new \yii\db\Query())
->select([id, email])
->from(user)
->where([last_name => 'Smith'])
->limit(10)
->all();
однако как обстоят дела с запросами, включающими вложенные? в моем случае нужно написать скрипт для генерации следующего запроса:
SELECT
un.user_id,
un.username,
un.expert_id,
un.expert_name,
un.creat,
un.msg,
un.count_qwest,
un.affiliate_id
FROM
(
SELECT sender_id user_id, sender_username username, room_owner_id expert_id, p.nickname expert_name, created_at creat, message msg,
pu.affiliate_id affiliate_id,
COUNT(sender_id) OVER (PARTITION BY sender_id ORDER BY created_at ) AS count_qwest
FROM video_text_chat_message
LEFT JOIN users_profile p ON p.user_id = room_owner_id
LEFT JOIN pap_user pu ON pu.customer_id = sender_id
WHERE created_at > now() - INTERVAL '1' MONTH
) un
WHERE TO_CHAR(un.creat, 'YYYY-MM-DD') = :MONTH AND un.msg LIKE 'Здравствуйте, меня зовут%' AND un.count_qwest = 1
ORDER BY un.creat DESC LIMIT 50;
как будет выглядеть код в таком случае? работает ли это так?:
$rows = (new \yii\db\Query())
->select(un.user_id, ..., un.affiliate_id)
->from(->select(sender_id user_id, ...)
->from(video_text_message_chat)
...
)
...
->all();
или же по той же самой структуре, что и в первом фрагменте кода, нужно написать построитель, просто в порядке вложенный запрос - внешний запрос?
не нашел инструкции по таким ситуациям в туториалах по yii2, буду рад, если ответ на вопрос ограничится просто ссылкой на мануал.