find で検索する場合は、オプションの joins を指定して、一時的に INNER JOIN 等が可能だが、Pagination している場合は、find を直接呼ばないので、同じ手法ではできない。
基本的にはコントローラの $paginate 変数の joins に設定しておけばよいが、一時的にアクション内から設定する場合は次のようにするとよい。
$this->paginate['joins'] = array(
array(
'type' => 'INNER',
'table' => 'tags',
'alias' => 'Tag',
'conditions' => 'Tag.book_id = Book.id'
)
);
$this->paginate();
$this->paginate['joins'] = null;
複数のテーブルを JOIN する場合は、同様に連想配列を定義すればよい。 JOIN が 1 つの場合でも、array は二重にしておく必要があるので注意。
Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。
好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。
詳しくは Web mixi で。