Cakephp PHP WEB開発

[Cakephp2→4]モデル編: recursiveのおさらい

※本サイトはPR表記を含みます。

Cakephp2からCakephp4への移行の際、モデル内で「public $recursive = -1;」の定義を見かけることがあると思います。

recursiveの役割を忘れがちになるので、書き記しておこうと思います。

 

Cakephp2: recursiveの役目

モデルにアソシエーションを定義している場合、recursiveがデフォルトで「0」に設定されている。find() を行うと、自動でjoinをする形になるので、簡単にアソシエーション先のデータを取得できていました。

でも、場合によっては余計なデータ取得はレスポンスに影響がでたり、メンテナンス性が悪くなったり、デメリットもあります。余計なデータは取得しない場合はrecursiveを-1にする必要がありました。(Cake2も途中でContainable というビヘイビアを使う流れになったみたいです)

 

Cakephp3や4ではどうなったん?

Cakephp3や4では、recursive自体が廃止されているので、移行の際は削除してもよかとです。

なぜなら、アソシエーション単位で取得するモデルを自由にコントロールできるためです。

 recursive >= 0 のモデルがあった場合、自動containされている可能性はあるので気をつけましょう

-Cakephp, PHP, WEB開発
-