モデルで定義したアソシエーション等をコントローラーで変更したい

CakePHP いまさらですが触ってます、、

今回は、モデルの使い回しをする際にはまってしまったTipsです。

例えば、商品画面では詳細な情報が必要だからと、ありとあらゆる関連テーブルをモデルでアソシエーションするとします。

検索画面で一覧表示したいからとそのモデルをそのまま使うと当然ですが件数が多くなってきたり、関連テーブルがたくさんあるとオモオモです。

そんな時は、Controller内の任意の関数も変更ができます。
これが出来ないと、検索用には SearchItem モデル、、なんていうのを作らなくてはならないです

そういう時に使える候補は3つ

1,オプションにて recursive  -1 ~ 2

2,Containableビヘイビア

 

3,bindModel,unbindModel をつかう

上記、最後の false をセットしないと、Paginatorとかを活用するときにModelで定義されたAssociation状態に戻ってしまいます。

 

こんな感じです

ちなみに、例えばその関連テーブルからデータを取りたいんだけど条件を付けたい、、みたいな場合も直接コントローラーから直接変更できます。

 

とりあえず、こんなかんじで(^^

 

コメントを残す