CakePHP dbo_sqlite3.php でエラー
会社でCakePHPをいじっていたとき、
https://github.com/cakephp/datasources
こちらのデータソースにてSQLite3でデータベースを構築してみたら
dbo_sqlite3.phpの534行目でエラーが出まくる。
その行を見てみると、
$last = stripos($querystring, 'FROM');
などと書いてある。
これが含まれるメソッドresultSetは、発行されたクエリをパースしてフィールド名をマッピングするものなのだけど、
SELECTから、FROMまでの間の文字列をぶっこぬいてきて、explode関数でカンマで区切る、というもの。
つまり、フィールド名に、「FROM」が含まれている場合(例.email_fromとか)
その文字までしか取得されないのでフィールドが途中までしか取得出来なかったりする。
対策方法は、
$last = stripos($querystring, ' FROM ');
とすればよさげ(未検証。私は面倒だったのでフィールド名変えた)