質問: CakePHPのfindについての質問です。 テーブルAとテーブルBがあり、アソシエーションされているとして、Aについてのfind文を書くとします。 (つまり、$this->A->findです) このとき、Aについての条件はconditionで書けばいいのはわかっていますが、アソシエートされているBについてはどのように書けばいいのでしょうか? hasone, belongto, hasmanyなどの種類によってテーブル自体を取得するかどうかはrecuisiveで調節するのはわかるのですが、テーブルの中身、カラムを指定するにはどうすればいいのかという質問です。 例えば、$this->A->findでAの値を取得しつつ同時にBの○○カラムを取得する、ということです。 このようなことはできるのか、出来るとしたらどのように書けばいいのでしょうか?
回答: 検索して見つけたページを紹介するだけの回答となりますが、以下がご質問の実装方法を説明していると思います。 例えば、テーブル`B`から取得するカラムを`col1`と`col2`に制限したい場合は、以下のように記述するのかと思います。 ``` $query = $this->A->find()->contain([ 'B' => function ($q) { return $q -> select(['col1', 'col2']); } ]); ```