joinsの設定を使う場合
メモ。
pagerやfindでデータを抽出する設定$optionsで、joinsによりINNER JOINなどを行う場合、
database.phpにてテーブルのprefixを設定すると正しく動かなくなる。
その対策。
ソースざっと追いましたが、原因は不明。
ただとにかく、joinsに、table_prefix設定が自動反映される仕組みがない模様。
table_prefixは、dispatcher実行以後に $this->Model->tablePrefix で取得できる様になるので、find()の直前か、あるいはbeforeFilterなどで設定します。
例
function beforeFilter() { // tablePrefixのためここでSET $this->options['joins'] = array_merge($this->options['joins'], array( array('type' => 'INNER', 'table' => '`' . $this->Information->tablePrefix.'information`', 'alias' => 'Information', 'conditions' => '`Geocode`.`id`=`Information`.`geocode_id`', ), )); parent::beforeFilter(); }
*1:joinsにtable_prefixが入らないのは、自分でやってみて気がついた・・・