2012-01-31 41 views
0

我擁有屬於使用者的圖像,並且我擁有屬於使用者的優惠券。每個圖像和優惠券表在我的數據庫中都有一個'user_id'的外鍵。當我調試這個控制器的邏輯輸出:模型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,並且檢索到的內容沒有任何變化。我嘗試加載用戶模型並以這種方式進行查找,結果令人沮喪。我不明白如何讓Image和Coupon一起玩,考慮到我不希望它們直接相互關聯。

回答

2

他們的方式,你有你的'包含'數組意味着圖像直接與優惠券(它們之間沒有模型)相關聯,而不是這種情況。優惠券屬於用戶和用戶擁有*圖片。因此,圖像將需要進入用戶數組。您包含的所有模型都可以使用全部或大部分可用的find()選項。當使用contains時,遞歸是布爾值。

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

我想你應該真的只是添加到您的AppModel,因爲你幾乎總是使用含有和中可容納一定要貼於在遏制

public $actsAs = array('Containable');

使用的所有車型這樣你就不必將行爲附加在每個模型上。

$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

我附加了可容納的模型,並將'Image'插入'User'arrray中。它在調試中顯示的唯一方法是如果我刪除'fields'=> array('id')。現在,問題是我不知道如何訪問它。通常我會做一些像echo $ c ['Image'] ['logo']但蛋糕表示這是一個未定義的索引。我試着在我看來foreach($ coupondata爲$ value){foreach($ value ['Image']爲$ v){echo $ v ['logo']; }}但這不起作用。 $ value ['User'] ['Image']也不是我那種吸引力。 – huzzah 2012-02-01 00:31:17