2011-01-29 4 views
2

개인 프로젝트를 개발 중입니다.CakePHP bindModel 작동 중, 미리 설정된 모델 연관 없음

두 가지 모델 '쇼'와 '에피소드'가 있습니다. 하나의 컨트롤러 'Ops'가 있습니다.

쇼 모델 :

class Show extends AppModel 
{ 
var $name = 'Show'; 

var $hasMany = array(
    'Episode' => array(
    'className' => 'Episode', 
    'foreignKey' => 'show_id' 
) 
); 
} 

에피소드 모델 :

class Episode extends AppModel 
{ 
var $name = 'Episode'; 

var $belongsTo = array(
    'Show' => array(
    'className' => 'Show', 
    'foreignKey' => 'show_id' 
) 
); 
} 

옵스 컨트롤러 : 내가 원하는처럼

class OpsController extends AppController 
{ 
var $name = 'Ops'; 
var $uses = array('Show','Episode'); 

function index() 
{ 
    $episodes = $this->Episode->find('all',array(
    'limit' => 10, 
    'order' => array('Episode.first_aired' => 'DESC'), 
    ) 
); 
    debug($this->Episode); 
    debug($episodes); 

} 
} 

내가 '에피소드'기록을 얻을 옵스 컨트롤러를 실행하지만, 'belongsTo'구성에서 'show_id'를 기반으로 연관된 'Show'레코드를 가져 오지 마십시오. 요청이 계속 진행되는 동안 모델 클래스를 의도적으로 중단 할 수 있으므로 모델을 전혀 참조하지 않는 것으로 보입니다. 이 작품을하면서 지금

$this->Episode = ClassRegistry::init('Episode'); 
$this->Episode->bindModel(
array('belongsTo' => array(
    'Show' => array(
    'className' => 'Show' 
    ) 
) 
) 
); 

:

, 검사를 많이하고 연구 및 테스트 후, 나는 찾기() 요청 이전하여 옵스 컨트롤러에 다음을 추가하여 작동하도록 얻을 수 있었다 아직도 모델이 제대로 호출되지 않는 이유를 알고 싶습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 감사!

답변

0

동일한 방법으로 을 쿼리하면 어떻게됩니까?

id 필드가 올바르게 정의되어 있습니까? 두 테이블에

당신은 id (INTsize)와 에 대한 에피소드가show_id (INTsize)가 있어야 있어야합니다.

이 케이크 규칙에 따라 설정할 수 있다면, 당신은 'foreignKey' => 'show_id' 줄을 제거 할 수 있어야하고 케이크 그것을 밖으로 정렬합니다 itself.` 그것은 생성 자동적으로 대신 모델 파일을 사용하지 않는 케이크 같은 소리

+0

네, 필드 유형을 두 번 확인 했으므로 올바르게 설정되었습니다. 나는 또한 같은 결과를 사용하여 'foreignKey'설정을 사용하지 않고 사용하려고 시도했습니다. 내가 다루는 주된 문제는 $ uses 변수를 사용할 때 모델 클래스가 포함되지 않는다는 것입니다. 의도적으로 모델에 오류를 넣었습니다. '사용하는'컨트롤러는 오류가 아닙니다. –

0

일부는 테이블을 기반으로합니다. 바보 같이 들리지만 폴더와 파일 이름에 맞춤법 오류가 있는지, 소문자인지 확인하십시오.

0

Show 모델에는 episode 외래 키가 show_id로 설정되어 있습니다 (episode_id 여야 함). 그러나, 나는 그것이 문제의 원인이라고 생각하지 않습니다.

CakePHP 명명 규칙을 내가 말할 수있는 것으로 변경하지 않으므로 연관을 정의하고 문자열로 남겨 두는 배열을 제거하십시오.

class Show extends AppModel 
{ 
var $name = 'Show'; 

var $hasMany = array(
    'Episode' 
); 
} 

class Episode extends AppModel 
{ 
var $name = 'Episode'; 

var $belongsTo = array(
    'Show' 
); 
} 

이 방법은 작동하지 않을 수 있지만 이전에 유사한 문제가 발생하여 해결되었습니다. 행운을 빕니다.