siteconfig
私のYiiアプリケーションには、テーブルを表すモデルがあり、4つの列があります。
- 整数
config_id
、 - 文字列
key
、 - 文字列
value
、 - 文字列
update_time
。
Giiを使用してモデルを作成しました(間違いを犯さないようにするため)。ここではコード全体を公開していません。これは、Giiによって生成された標準モデルコードである私が100%変更していないためです。私の問題は検索に関連しているので、生成されたコードの重要な部分(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,
));
}
私は生成されたモデルを通常のYiiActiveRecord検索で次のように使用しようとしています:
$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]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。1行目の'key='sitename'LIMIT 1'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。実行されたSQLステートメントは次のとおりです。SELECTvalue FROM
siteconfig
t
WHERE key =:key LIMIT 1
どこで私は間違えましたか?