я застрял с этим кодом:
->select ('t1.id_i, t2.status')
->from ('table1 as t1, table2 as t2')
->where(array('or', 'id_i'=>$model->id, array('like', 't2.status', '%Beginner%')))
вот что я хочу
WHERE t1.id_i=$model->id AND/OR t2.status LIKE "Beginner" //AND/OR are optional combination
Я попробовал много комбинаций без результата.
Пожалуйста, помогите мне.
Благодарю.
Я думаю, что проблема в том, что CDbCommand
«s where()
метод не поддерживает использование пар ключ-значение в $conditions
массив, как вы делаете здесь: 'id_i'=>$model->id_e
, Это связывание должно произойти через $params
параметр.
Кроме того, я бы также рекомендовал использовать строку с привязкой значения вместо синтаксиса массива, поскольку это облегчит чтение кода.
Вот модифицированный код для вызова where()
:
->where('id_i = :id_e OR t2.status LIKE "%Beginner%"', array(':id_e' => $model->id_e))
Вы можете видеть, что он ближе к окончательному SQL, что облегчает отладку.
Если вы решили использовать оригинальный синтаксис, попробуйте вместо этого:
->where(array('or', 'id_i = :id_e', array('like', 't2.status', '%Beginner%')), array(':id_e' = $model->id_e))
попробуйте поставить условие для метода where () в классе CDbCommand, где метод () указывает часть запроса WHERE, первый аргумент — это условие запроса, а второй аргумент — параметры (name => value), которые будут связаны с запросом. ,
->select ('t1.id_i, t2.status')
->from ('table1 as t1, table2 as t2')
->where('t1.id_i=:id_i OR t2.status LIKE "%:status%"',array(':id_i' => $model->id,':status' => 'Beginner'))
подробнее о методе CDbCommand where () Вот