2012-01-31 3 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

'포함'배열을 사용하면 이미지가 직접적으로 쿠폰 (모델 간에는 해당되지 않음)과 관련이 없음을 의미합니다. 쿠폰 belongsTo 사용자 및 사용자가 * Image를가집니다. 따라서 이미지는 사용자 배열에 있어야합니다. 포함 된 모든 모델은 사용 가능한 find() 옵션의 전부 또는 대부분을 사용할 수 있습니다. contains를 사용할 때, recursive는 boolean입니다.

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

난 당신이 거의 항상 포함 사용 함유 성 필수가 봉쇄

public $actsAs = array('Containable');

에 사용 된 모든 모델에 부착 할 수 있기 때문에 당신이 정말로 당신의 AppModel이이를 추가해야한다고 생각 그렇게하면 모든 모델에 동작을 계속 첨부 할 필요가 없습니다.

$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']와 같은 것을 할 것이지만 cake는 이것이 정의되지 않은 색인이라고 말한다. 나는 foreach ($ couponata를 $ value로) {foreach ($ value [ 'Image']를 $ v로 사용) {echo $ v [ 'logo']; }}하지만 작동하지 않습니다. $ value [ 'User'] [ 'Image'] ---- 그건 내가 짚으로 짚고 넘어지고있는 것이 아닙니다. – huzzah