Вложенные запросы и Query Builder

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
Аватара пользователя
Sufir
Сообщения: 15
Зарегистрирован: 2015.01.23, 18:50

Вложенные запросы и Query Builder

Сообщение Sufir »

Как правильно построить запрос, вида:

Код: Выделить всё

SELECT sub.*, joined1.field1, joined2.field1
FROM (
    SELECT * FROM main WHERE ...
) AS sub
WHERE
LEFT JOIN joined1
LEFT JOIN joined2
...

Код: Выделить всё

$query = (new Query())
            ->from(['sub' => $rootQuery])
Если сделать так, то получаем SQLSTATE[42601]: Syntax error: 7 ОШИБКА: ошибка синтаксиса (примерное положение: "SELECT"), т.к. билдер не догадывается обернуть подзапрос в скобки.

Код: Выделить всё

$query = (new Query())
            ->from(['sub' => new Expression("({$rootQuery->sql})", $rootQuery->params)])
            ->addParams($rootQuery->params)
Если сделать так, то получаем SQLSTATE[08P01]: <<Unknown error>>: 7 ОШИБКА: в сообщении Bind передано неверное число параметров (0, а подготовленный оператор "pdo_stmt_00000001" требует 1), не работает, потому-что параметры не выбираются из условия и не передаются в верхний запрос (https://github.com/yiisoft/yii2/blob/ma ... y.php#L548), но и выглядит очень костыльно.


Если передать параметрs запроса вот так, вторым аргументом

Код: Выделить всё

$rootQuery->andWhere(['client.status' => $filter->status], [':qp1' => $filter->status]); 
то запрос отрабатывает, но как мне узнать или присвоить в таком случае имя параметра? Впрочем, всё равно это получается как-то криво, по всей видимости я не туда копаю?
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: Вложенные запросы и Query Builder

Сообщение andrei.obuhovski »

DAO не вариант?
Аватара пользователя
Sufir
Сообщения: 15
Зарегистрирован: 2015.01.23, 18:50

Re: Вложенные запросы и Query Builder

Сообщение Sufir »

Что вы подразумеваете под DAO, отказаться от билдера и plain-SQL в yii\db\Command скормить? Но SQL перед этим всё равно нужно как-то собрать... Билдер удобен, т.к. запрос сложный с множеством стратегий построения, соединений, возможных условий фильтрации и сортировки. Свой билдер с блэкджеком и женщинами лёгкого поведения написать?..
Аватара пользователя
Sufir
Сообщения: 15
Зарегистрирован: 2015.01.23, 18:50

Re: Вложенные запросы и Query Builder

Сообщение Sufir »

Стыд на мою голову... Я уже команду ему туда скормить пытался, а не запрос. Да, всё отлично работает. Пятница... пора передохнуть.Изображение
Закрыто