サブモデルの conditions

Posted by muchag | CakePHP |
初回投稿:2011-06-28 (火) 11:07:15 | 最終更新:2011-06-28 (火) 11:07:24

モデルにアソシエーションを設定しても
データ取得の際にサブモデルの検索条件を設定するのに手間取った。

【環境】
[CakePHP] 1.3.10
状況

A, B, C 3つのモデルが存在する。

A hasMany B
B hasMany C
という状況だとする。
 

基本

サブモデルの条件設定はモデルでできる。

  1. class A extends AppModel {
  2.  
  3.     var $name = 'A';
  4.  
  5.     var $hasMany = array(
  6.         'B' => array(
  7.             'className' => 'B',
  8.             'conditions' => array('B.id' => 1), // ここ
  9.         )
  10.     );
  11. }

 
この手法だと 常に 条件が設定されてしまう。
 

動的に設定する手法

コントローラ内で

  1. $this->A->hasMany['B']['conditions'] = array('B.id' => 1);
  2. $this->A>find('all');

としてやればよい。

孫モデルの設定

モデルC に検索条件を設定したければ

  1. $this->B->hasMany['C']['conditions'] = array('C.id' => 1);
  2. $this->A>find('all');

このようにすればよい。
 
参考元サイト:It’s show time! アソシエーションしてるHasManyを条件文に

Posted by muchag | CakePHP |
初回投稿:2011-06-28 (火) 11:07:15 | 最終更新:2011-06-28 (火) 11:07:24

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment