NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2010.10.26

recursiveでデータ取得

おっしー

シェルの作成のHowtoを書こうと思ったけど予想外に簡潔に終わってしまったので変更。

recursive、使ってますか?

他のテーブル(モデル)に対してアソシエーションの設定をしておけば

設定をしておけば!

(私は設定してないのに取得しようとしていたので二回言ってみた。)

当該のテーブルの情報を取得してくる時に、同時に、アソシエーション設定したデータも取得してきてくれる。
当該カレントモデルのfindAll,findをするだけで、他の連携をとってくれるありがたーい機能です。

ちなみに、「recursive=-1」にしておけば自分自身のみ取得出来る。

いちいちunbindModelしなくてもこっちの方が楽なのかもって今気がついた。(゚ロ゚;)ああぁ・・。

その話は棚にでも置いといて、

今回私は「recursive=2」で取得してきました。

prしてみた結果がこれ。

Array
(
    [0] => Array
        (
            [Detail] => Array
                (
                    [name] => なまえ
                    [point] => 222

                    [Detail] => Array
                        (
                            [id] => 361
                            [type_id] => 2
                            <pre>[code] => 96

                            [Country] => Array
                                (
                                    [id] => 96
                                    [point] => 10
                                )

                            [Category] => Array
                                (
                                    [id] => 2
                                    [point] => 3
                                )
                        )
                )

            [Pict] => Array
                (
                    [detail_id] => 361
                    [point] => 2
                )
        )
)

となる。

detailに設定してある「belongsTo」で「Country」「Category」が取得できて
「hasMany」でPictのデータが取得できる。

階層が若干複雑なので気をつけるんやで、自分。

ちなみに「recursive=0」ってのもあるみたい。

hasOne,belongsToは最初のsqlで目的が無くなってしまうので0でも動く。