В моем приложении Yii у меня есть модель, которая представляет siteconfig
таблицу и имеет четыре столбца:
- целое число
config_id
,
- строка
key
,
- строка
value
,
- строка
update_time
.
Я создал модель с использованием Gii (чтобы не допустить ошибок). Я не публикую здесь весь код, потому что он на 100% неизменен мной, стандартный код модели, сгенерированный Gii. Поскольку моя проблема связана с поиском, я публикую только важную часть сгенерированного кода (метод search()
):
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('config_id',$this->config_id);
$criteria->compare('key',$this->key,true);
$criteria->compare('value',$this->value,true);
$criteria->compare('update_time',$this->update_time,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Я пытаюсь использовать сгенерированную модель в обычном поиске Yii ActiveRecord следующим образом:
$etona = new SiteConfigurationRecord();
$crit = new CDbCriteria();
$crit->select = "value";
$crit->condition = "key=:key";
$crit->params = array(":key"=>"sitename");
$etona = $etona->find($crit);
Но вместо получения ожидаемых результатов поиска возникает странная (для меня) ошибка:
CDbCommand не удалось выполнить инструкцию SQL: SQLSTATE [42000]:
Синтаксическая ошибка или нарушение доступа: 1064 У вас есть ошибка в вашем SQL
синтаксис; проверьте руководство, соответствующее вашей версии сервера MySQL
для правильного синтаксиса использовать около 'key =' sitename 'LIMIT 1' в строке 1.
Выполнено SQL-выражение: SELECT value FROM siteconfig
t
ГДЕ ключ =: ключ LIMIT 1
Где я ошибся?