[CakePHP]関連テーブルをfind(‘list’)する際はrecursive=0にする

[CakePHP1.2.3]

フォームのセレクトボックスを作る際に、コントローラー内でfind(‘list’)で、belongsToの関連データを取得しようとしたら取得できず。調べてみたら、この場合はrecursive=0をセットしないといけないようです。

http://book.cakephp.org/1.3/view/1018/find#find-list-1022

上記リファレンスは1.3ですが、Cakephp1.2でも同様にrecursive=0が必要でした。
地味に気がつかないことがあるのでお気をつけください。 

 

あまり使う場面がないようで、意外とありました。
例えば、Tagで絞り込んだArticleのlistを取得したい際などですね。
そのような場合、以下のようにします。

[php]
$this->Article->bindModel(array(‘hasOne’ => array(‘ArticlesTag’)));

$this->Article->find(‘list’, array(
‘conditions’ => array(‘ArticlesTag.tag_id’ => $tag_id),
‘recursive’ => 0
));
[/php]

開発環境

php5.2
Cakephp1.2.3

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.