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が入らないのは、自分でやってみて気がついた・・・