Сложное условие
Сложное условие
Как сделать в ActiveRecord что-то вроде $query->where('attr1 != value and attr2 = value') ? Я имею ввиду синтаксис с массивами. Если мне надо только равно я пишу where(['attr' => $value]). Если мне надо только не равно я пишу where(['!=', 'attr', $value]). Но как их объединить?
Re: Сложное условие
Есть несколько вариантов. Например, можно использовать методы расширяя запрос ( ->andWhere() , ->orWhere() и т.п.) или внутри одного where собирать сложные запросы используя массивы https://www.yiiframework.com/doc/guide/ ... tor-format .
Re: Сложное условие
Обычно я их и использую, но сейчас мне надо сделать updateAll (там тот же синтаксис что у where вроде). Попробовал делать так ['and', ['!=', 'attr1', 123], ['attr2' => true]] - sql сбилдило неверный: WHERE (`attr1` != 'site') AND (`attr2`=TRUE). Вот и как это понимать? Что за site? Я такого не писал в запросе точно. И почему TRUE, хотя обычно он умеет приводить булевый тип к 1 или 0.Alexum писал(а): ↑2018.04.23, 17:31 Есть несколько вариантов. Например, можно использовать методы расширяя запрос ( ->andWhere() , ->orWhere() и т.п.) или внутри одного where собирать сложные запросы используя массивы https://www.yiiframework.com/doc/guide/ ... tor-format .
Re: Сложное условие
попробуйте вместо "!=" использовать "<>"
Re: Сложное условие
Код: Выделить всё
['and', ['!=', 'attr1', 123], ['attr2' => true]]