めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

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をするわけです。

...知った時は驚きました。
これは、直感的のような..モデルのことを知らないと難しいような...。