我遇到了一个我无法弄清楚的问题,但应该非常简单 我的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的关系,这一切看起来都很好。 ..
似乎是一个简单的问题。从我可以看到有这个问题的人通常有他们的模型名称错误(或复数)但这不是这里的情况...
我能做错什么?
答案 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');
我知道自己喜欢什么。