2012-11-07 1 views
2

hasMany (Join Model) 연관을 사용하여 연관된 Model 데이터를 가져올 수 없습니다. cakephp와 함께 일하고 있습니다. 2.2.3 cakephp 1.3에서 동일한 찾기가 가능하므로 문제가 무엇인지 알 수 없습니다.cakephp 2.2.3 - hasMany throught (Join Model)와 연관된 데이터를 가져올 수 없습니다.

이벤트 hasMany ScoresToEvent. 악명이 hasMany ScoresToEvent입니다. ScoresToEvent belongsTo 이벤트 및 점수.

ScoresToEvent에는 추가 정보가 있으므로 HATBM을 사용할 수 없습니다.

일부 코드 : 내가 이벤트를 얻을 수 및 데이터를 점수해야이 경우

$this->Event->ScoresToEvent->find('all', array('recursive'=>2)) 
array(
    (int) 0 => array(
     'ScoresToEvent' => array(
      'id' => '8', 
      'event_id' => '7', 
      'score_id' => '1' 
     ) 
    ), 
    (int) 1 => array(
     'ScoresToEvent' => array(
      'id' => '9', 
      'event_id' => '7', 
      'score_id' => '3' 
     ) 
    ) 
) 

: 내가 데이터를 검색 할 때

event.php  
class Event extends AppModel{ 
     public $name='Event'; 
     public $hasMany=array('ScoresToEvent'); 
     public $belongsTo=array('Entity'); 
     public $actsAs=array('containable'); 
} 

score.php 
class Score extends AppModel{ 
     public $name='Score'; 
     public $hasMany=array('ScoresToEvent'); 
     public $belongsTo=array('Entity'); 
} 

scores_to_event.php 
class ScoresToEvent extends AppModel{ 
    public $name='ScoresToEvent'; 
    public $belongsTo=array('Event','Score'); 
} 

나는 이러한 결과를 얻을 수 있습니다.

나는 그것이 "ScoresToEvent는"모델과 연관되지 않은 모델 결과는 점수 데이터를 검색하지 않습니다,이 배열을 "점수" 것을 반환 함유 성 사용하려고하면

...

$this->Event->find('all', array(
     'contain'=>array(
     'Entity', 
     'ScoresToEvent'=>array('Score'=>array('Entity')) 
    ), 
     'conditions'=>array('Event.id'=>7)); 

array(
    (int) 0 => array(
     'Event' => array(
      'id' => '7', 
      'entity_id' => '17', 
      'start_date' => '2012-07-24', 
      'status' => null, 
      'end_date' => null 
     ), 
     'Entity' => array(
      'id' => '17', 
      'title' => 'y', 
      'content' => '', 
      'subtitle' => '', 
      'type' => 'Evento', 
      'avatar' => null, 
      'image' => null 
     ), 
     'ScoresToEvent' => array(
      (int) 0 => array(
       'id' => '8', 
       'event_id' => '7', 
       'score_id' => '1' 
      ), 
      (int) 1 => array(
       'id' => '9', 
       'event_id' => '7', 
       'score_id' => '3' 
      ) 
     ) 
    ) 
) 

내 잘못은 어디 있니? 어떤 코드 부분이 잘못 되었습니까? 나는

감사에게 새로운 CakePHP의 2.2.3 설치의 모든

추신을이 시도 동일한 코드가 cakephp 1.3 p.p.s에서 올바르게 작동합니다. '엔티티'를 고려하지 마십시오.

답변

3

모델 이름의 문제라고 생각합니다. scores_to_event.php 파일의 이름을 ScoresToEvent.php으로 바꿉니다. 하지만이 경우에는이 모델의 최상위 이름이 ScoreEvent.php 인 것이 더 적절하다고 생각합니다. 이 예와 같이 모델에 대한 정보를 삽입하는 시도 후 : ScoreEvent.php

public $belongsTo = array(
     'Event' => array(
      'className' => 'Event', 
      'foreignKey' => 'event_id' 
     ), 
     'Score' => array(
      'className' => 'Score', 
      'foreignKey' => 'score_id' 
     ) 
); 
+1

그라 무한, sapevo 체 doveva essere 않은 제품 사양 importante 체 비 avevo considerato! 파일을 열거 나하면 파일을 편집 할 수 있습니다. 효력이 있으면 1.3 버전을 제출하십시오. Ancora Grazie! 고마워요. 중요한 것은 아니지만, 세부 사항이라고 생각합니다. 제안한대로 파일 이름이 변경되어 작동했습니다. 나는 여전히 1.3 버전의 규칙을 사용했다. 다시 한번 감사드립니다! – Radj