CakePHP(1.2)でJOIN先のテーブルの条件をコントローラー側で変更する
CakePHP(1.2)を利用していてmodelでhasManyなど複数のテーブルをJOINしている時に、JOINしたテーブルについて、limitや、orderを決めたい時があります。
例えば表示のときに、ユーザー(ユーザーテーブル)一覧があり、そこにユーザーの最新のコメント(コメントテーブル)を1つだけ表示したいとか。
CakePHPでコントローラからfindでデータを取り出すときに、
<?php $this->[モデル名]->find('all', 条件の配列) ?>
とできるのですが、条件の配列でJOINしたテーブルの条件を決めることができません。どうやったらできるんだろう?と調べてみました。
たとえば、JOIN先のモデルを1つだけ取り出したい場合は、下記のように書きます。
<?php $this->[モデル名]->hasMany['JOINしたモデル名']['limit'] = 1 ?>
で、この後にfindや、paginageをするわけです。
...知った時は驚きました。
これは、直感的のような..モデルのことを知らないと難しいような...。