Конструктор запросов - сложное условие

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
mila.vetrova
Сообщения: 4
Зарегистрирован: 2018.03.16, 20:11

Конструктор запросов - сложное условие

Сообщение mila.vetrova »

В процессе составления запроса заметила, что условия генерятся по-разному. Вопрос: если хочется записать сложное условие способом 1, то есть ли способ указать конструктору, что операнд является колонкой в таблице, а не строкой?

Способ 1. Не работает. Хорошо читается

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

$query->where([
    'and',
    ['<', 'c2.lft', 'c0.lft'],
    ['>', 'c2.rgt', 'c0.rgt'],
    ['<>', 'c2.slug', 'root']
])
// WHERE (`c2`.`lft` < 'c0.lft') AND (`c2`.`rgt` > 'c0.rgt') AND (`c2`.`slug` <> 'root')
Способ 2. Работает. Плохо читается

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

$query->where('c2.lft <= c0.lft AND c2.rgt >= c0.rgt AND c2.slug <> "root"')
// WHERE c2.lft <= c0.lft AND c2.rgt >= c0.rgt AND c2.slug <> "root"
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Конструктор запросов - сложное условие

Сообщение andku83 »

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

    ...
    ['<', 'c2.lft', new \yii\db\Expression('c0.lft')],
    ...
mila.vetrova
Сообщения: 4
Зарегистрирован: 2018.03.16, 20:11

Re: Конструктор запросов - сложное условие

Сообщение mila.vetrova »

Благодарю за подсказку! Теперь буду пользоваться
Ответить