2010-07-13 3 views
0

나는 알아낼 수없는 약간의 문제가 있지만 정말 간단해야합니다.
나는 내 CakePHP의 (1.3) 응용 프로그램에서 다음과 같은 모델 구조를 가지고 :관계가 정확하면 정의되지 않은 속성 오류가 발생하는 이유는 무엇입니까?

ProspectiveQuote [hasMany] QuoteUnit [belongsTo] Unit

하지만 내 ProspectiveQuotesController의 라인 :

:

$this->ProspectiveQuote->QuoteUnit->Unit->find('list');

나에게 다음과 같은 오류를 제공합니다

Undefined property: AppModel::$Unit

물론, AppModel을 보지 말아야합니다. 이어야합니다.은 QuoteUnit을보아야합니다.
내가 $this->ProspectiveQuote->QuoteUnit->find('all')을하면 결과가 나온다. (관련 모델 데이터가 없기 때문에 ...) QuoteUnit을 분명히 찾을 수 있으며 Unit과의 관계를 두 번 확인했다.

간단한 문제와 비슷합니다. 내가 볼 수있는 것에서이 문제가있는 사람들은 일반적으로 모델 이름이 잘못되었거나 (복수형) 여기에 해당하지 않습니다 ...
내가 뭘 잘못하고 있니?

답변

2

모델 연결의 구문을 다시 확인하여 올바른지 확인하십시오. 또는 테스트를 위해 몇 가지 새로운 모델을 구워서 기대하는 방식으로 구현할 수 있습니다.

또 다른 좋은 점은 DebugKit http://www.ohloh.net/p/cakephp-debugkit을 잡는 것입니다. 그러면 변수와 SQL 쿼리를 보는 데 도움이됩니다.

레오의 코멘트에서 언급했듯이 나는 넣거나, 스택에 큰 오버 헤드를 넣어 두었습니다. uses()을 피하려고합니다.

+0

내 단위 모델이 QuoteUnit과 관계가 없다는 것을 제외하고는 관계를 두 번 확인하고 모두 괜찮 았습니다. 나는 그 방향으로 관계를 사용하지 않기 때문에 이것이 중요 할 것이라고 생각하지는 않았지만 분명히 중요합니다. DebugKit에 대한 팁을 보내 주셔서 감사합니다. –

0

컨트롤러에 var $uses = array('ProspectiveQuote','QuoteUnit','Unit');을 설정 했습니까? - (이 일을 조금 더 효율적인 방법이 있지만) 이렇게하면 http://book.cakephp.org/2.0/en/controllers.html#controller-attributes

당신처럼 관련 모델에 액세스 할 수 있습니다 참조 : 내가 아는

$this->Unit->find('list'); 

또는

$this->ProspectiveQuote->QuoteUnit->Unit->find('list'); 

하는 I 취하다.

+0

필자가 아는 한, $ uses와 같은 것을 사용하면 오버 헤드로 인해 눈살을 찌푸리게됩니다. 물론, 해결책을 찾지 못했을 때 그렇게 했어야했지만, 그렇게해서는 안됩니다. 어쨌든, 나는 내 문제를 해결했습니다. 내 관계는 일방적이었습니다. 자세한 정보는 DavidYell의 대답에 대한 내 의견을 확인하십시오. –