当我的关系看起来正确时,为什么我会收到未定义的属性错误?

时间:2010-07-13 06:35:56

标签: cakephp controller relationships

我遇到了一个我无法弄清楚的问题,但应该非常简单 我的cakePHP(1.3)app中有以下模型结构:

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 个答案:

答案 0 :(得分:2)

我会说要仔细检查模型关联的语法,以确保它们是正确的。或者支持它们,并烘焙一些新模型进行测试,以确保它符合您的预期。

另一个好处是获取DebugKit http://www.ohloh.net/p/cakephp-debugkit这将帮助您查看变量和SQL查询。

正如Leo的评论中提到的那样,我会尽量避免使用uses(),或者在你的堆栈中添加1.2一点大的开销。

答案 1 :(得分: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');

我知道自己喜欢什么。