Cakephp2からCakephp4への移行の際、モデル内で「public $recursive = -1;」の定義を見かけることがあると思います。
recursiveの役割を忘れがちになるので、書き記しておこうと思います。
Cakephp2: recursiveの役目
モデルにアソシエーションを定義している場合、recursiveがデフォルトで「0」に設定されている。find()
を行うと、自動でjoinをする形になるので、簡単にアソシエーション先のデータを取得できていました。
でも、場合によっては余計なデータ取得はレスポンスに影響がでたり、メンテナンス性が悪くなったり、デメリットもあります。余計なデータは取得しない場合はrecursiveを-1にする必要がありました。(※Cake2も途中でContainable というビヘイビアを使う流れになったみたいです)
Cakephp3や4ではどうなったん?
Cakephp3や4では、recursive自体が廃止されているので、移行の際は削除してもよかとです。
なぜなら、アソシエーション単位で取得するモデルを自由にコントロールできるためです。
※ recursive >= 0 のモデルがあった場合、自動containされている可能性はあるので気をつけましょう