このようなコードを使用している間:
$Model->find('all', array(
'conditions' => array(
'field' => '1111'
)
));
フィールドは varchar です。mysql フィールド cake は次のようなクエリを生成します。
SELECT * FROM Models WHERE field = 1111;
予想の代わりに
SELECT * FROM Models WHERE field = '1111';
これにより、mysql は文字列インデックスを使用する代わりに DB 全体を int にキャストします。他の誰かが書いた既に動作しているシステムを最適化しようとしていますが、クイック grep を実行すると、「修正」する必要がある何千もの検索結果が表示されます。したがって、受け入れられる唯一の解決策は、model-layer または mysql-layer のいずれかです。
tl;dr: Cake が条件から mysql に数値ではなく文字列として整数文字列を渡すようにする方法は?