• 締切済み

CakePHP recursiveプロパティの使い

大分類、中分類、小分類のテーブルを作っており、大分類・中分類間、中分類、小分類間は、それぞれのModelでbelongsToを用いてアソシエーションができていることは確認できております。 小分類のindex.ctpで、大分類・中分類・小分類の各項目を表示する表を作成しようと考えており、小分類のModelで、下記の記述をしました。 $this->set('「変数名」',$this->「小分類のModel名」->find('all',array('recursive'=>2))); しかし、その結果、 「Notice (8): Undefined index: 「大分類のModel名」 [APP/View/…/index.ctp, line 12]」 というエラーが戻ってきてしまっています。 recursiveプロパティで2を選択おけば、「小分類」のModelからでも、「中分類」のModelを経由してbelongsToでつながっている「大分類」のデータを拾ってくることができると思っていましたが、そうはいかなかったのだと思います。 どなたか、ご教示頂けないでしょうか。 よろしくお願い致します。

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

まずは、viewへ渡した変数の中身を debug() で表示してみてください。Config/core.phpの debug modeを 1または2 に設定すると、表示できます。複雑な多次元配列になっているはずです。 recursive = 2 で取得されるモデルは、元のモデルとは直接に関連してないので、モデル名は同列に並びません。 <?php echo h( $data[行番号]['blongsTo先モデル名']['さらにbelongsTo先モデル名']['カラム名'] ); ?> このようにしてそのデータを取り出す必要があります。 cakePHP2.x なら Hash クラスを使って、配列を見やすくしてから、viewへ渡すのがよいかともおもう。使えるメソッドは Hash::combine() あたりかな。 http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html

noname#246098
質問者

お礼

ありがとうございました。 お礼が遅くなり、申し訳ありません。 echo h( $data[行番号]['belongsTo先モデル名']['さらにbelongsTo先モデル名']['カラム名'] ); の、['belongsTo先モデル名']の記述が抜けておりました。 大変助かりました。 ありがとうございます。

関連するQ&A

専門家に質問してみよう