2012-01-31 20 views
0

私はbelongsTo Userという画像を持っていて、私はbelongsTo Userというクーポンを持っています。それぞれの画像とクーポンのテーブルには、私のdbに 'user_id'のforeignKeyがあります。私は、このコントローラロジックの出力デバッグする場合:モデルXはモデルY cakephpに関連付けられていません

$f=$this->Coupon->find('all', array(

      'conditions'=>array(
       'OR'=> array (
        'Coupon.expires' =>0, 
        'Coupon.end_date >'=>date('y-m-d') 
        ) 
       ), 
      'contain'=>array(
       'Image', 
       'Location'=>array('id','address','city','state','zip','area_code','exchange','sln','website'), 
       'User'=>array('id') 
       ) 
      ) 

     ); 
     $this->set('printcoupons', $f); 
     } 

を私はケーキが私に語った画像アレイは、クーポンに関連付けられていないことを除いて、私のすべてのデータを取得します。私はクーポンの再帰性を2に設定しようとしましたが、何が取得されるのかは変わりません。私はUserモデルを読み込み、その方法を見つけて悲惨な結果を得ようとしました。私は、イメージとクーポンを一緒に遊ぶのが得意で、私は彼らがお互いに直接関連しているのではないと考えて、どうやったらいいのか分かりません。

答えて

2

あなたの「含む」配列を持っているのは、Imageがケースではないクーポン(それらの間のモデルなし)に直接関連付けられていることを意味します。クーポンの所属ユーザーとユーザーには*画像があります。したがって、ImageはUser配列に移動する必要があります。あなたが含むすべてのモデルは、利用可能なfind()オプションのすべてまたはほとんどを使用できます。 containsを使用すると、recursiveはbooleanです。私はあなたがほとんど常に含まれていると封じ込めに

public $actsAs = array('Containable');

を使用するすべてのモデルに装着される収容可能必見使用しているため、あなたが本当にちょうどあなたのAppModelにこれを追加すべきだと思う

http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html#containablebehavior-options

そうすれば、すべてのモデルにその動作を引き続き付ける必要はありません。

$f = $this->Coupon->find('all', 
     array(
      'conditions' => array(
       'OR' => array(
        'Coupon.expires' => 0, 
        'Coupon.end_date >' => date('y-m-d') 
       ) 
      ), 
      'contain' => array(
       'Location' => array(
        'fields' => array(
         'id', 'address', 'city', 'state', 'zip', 'area_code', 
         'exchange', 'sln', 'website' 
        ) 
       ), 
       'User' => array(
        'fields' => array('id'), 
        'Image' 
       ) 
      ) 
     ) 
    ); 
+0

私はモデルに収納可能で、「画像」を「ユーザー」アレイに接続しました。デバッグで示された唯一の方法は、 'fields' => array( 'id')を削除した場合です。さて、問題は私がそれにアクセスする方法を知らないということです。通常はecho $ c ['Image'] ['logo']のようなことをしますが、これは未定義のインデックスです。私は私の考えでforeach($ couponataを$ value){foreach($ value ['Image'] $ v){echo $ v ['logo']としました。 }}しかし、それは動作しません。 $ value ['User'] ['Image'] ----それは私がストローで握っていたものではありません。 – huzzah

関連する問題