CakePHPのアソシエーション。
これ結構楽にテーブル連結できますよね。
hasOneとbelongsToに関しては、アソシエーション設定時に
typeをINNERに指定すればよいだけですが、hasManyにはそんなものはございません。
なので、力技でINNER JOIN連結設定。
前提条件
CakePHP1.3
Postgres8.1
以下サンプルです。
Columnテーブルに複数のColumnInfoテーブルが紐付いており
Column.id = ColumnInfo.column_idがマッチするデータのみ取得。
※Column.idが主キー
※ColumnInfo.column_idが外部キー
$options = array();
$options['fields'] = array('Column.*', 'ColumnInfo.*');
$options['joins'][] = array(
'type' => 'INNER',
'alias' => '',
'table' => '',
'conditions' => array('Column.id = ColumnInfo.column_id')
);
$res = $this->Column->find('all', $options);
ポイントはjoins使う場合は、fieldsをちゃんと指定してあげる事です。
今回のサンプルは非常に簡単なものですが、
複雑な処理になるとやっぱり直クエリ書いた方がよいですね。
