| 40件目(121件中) |

'joins'で明示的にテーブルをJOINする

固定リンク:#0000000084   投稿者:ZiSTA 日時:2008-03-31 10:26:52   コメント( 0

CakePHPのアソシエーションは便利で、hasOneとbelongsToを指定してあるものは自動的にテーブルをJOINしてデータを取得してくれます。


しかし、Aテーブル-belongsTo -Bテーブル-belongsTo -Cテーブルのようなテーブルのような構成の場合、AテーブルからCテーブルまでJOINしてデータをfindしようとして、いくらrecursiveのレベルを上げても出来ません。(JOINではなく新たなSQLが発行されます。)


このような時は、'joins'パラメータが利用できます。
CakePHP 1.2では検索条件を引き数ではなく、配列1つにまとめて指定する事が出来ます。


""
$options['conditions']='hoge hoge';
$options['fields']='hoge hoge';
$options['order']='hoge hoge';
$this->Model->find('all',$options)
""
同じようにJOINしたいテーブルを指定できます。
""
$options['joins'][]=
array(

"type" => 'INNER or LEFT',

"alias" => 'テーブル名のエリアス',

"table" => 'テーブル名',

"conditions" => JOIN ONで指定する条件,
);
""


CakePHP 1.1ではそのまま利用できないのでjoinsを利用できるようにする方法がCakePHP findAll で INNER JOIN する方法で紹介されています。

 

コメント

| 40件目(121件中) |
↑ ページトップ