CakePHP:hasMany模型关联不是递归获取

CakePHP:hasMany模型关联不是递归获取,cakephp,recursion,model,associations,Cakephp,Recursion,Model,Associations,我有以下协会: Site-hasMany-Sitekey Sitekey-belongsTo-站点 sites.id是主键 sitekeys.site\u id是外键 现场模型: var$hasMany=array('Sitekey') 查询: $this->find('all',array('conditions'=>array('Sitekey.keyword_id'=>$key),'recursive'=>1)) 使用该关联递归获取(查找“全部”)不起作用。我已尝试显式定义类名、外键等 作

我有以下协会:

Site-hasMany-Sitekey Sitekey-belongsTo-站点

sites.id是主键 sitekeys.site\u id是外键

现场模型: var$hasMany=array('Sitekey')

查询: $this->find('all',array('conditions'=>array('Sitekey.keyword_id'=>$key),'recursive'=>1))

使用该关联递归获取(查找“全部”)不起作用。我已尝试显式定义类名、外键等

作为最后的努力,我只是尝试将站点模型更改为: var$hasOne=array('Sitekey')

当我对它执行递归查找'all'时,它执行连接并正确返回数据。你知道我做错了什么,或者我可以用什么技术来调试/修复问题吗


谢谢

可能是这样简单的事情吗?您使用过的$this关键字(假设我们在控制器中)将是控制器的实例,而不是模型。因此,您的结果将基于控制器的默认模型。确保您的控制器“使用”了您试图查询的模型

$results = $ModelName->find('all', array('conditions' => array('Sitekey.keyword_id' => $key), 'recursive' => 1));

我建议也调查一下可控制的行为。除了使用递归,您还可以获得更多的控制。

在指定hasMany(以及belongsTo)时,您是否尝试过提供类和键

对我来说,当屈折符不能正确地将名词单数化和复数化时,就会发生这种情况。我已经习惯了总是先检查这个

如果这确实有效,那么在理论上你应该看看为什么它不能识别它。创建另一个模型栏(或它知道的其他单词),并将其与sitekey进行相同的关联,然后查看它在您的站点中是否有效。如果是这样的话,很可能是Sitekey上的拐点

var $hasMany = array( 'Sitekey' => array(
  'className' => 'Site',
  'foreignKey' => 'site_id'
));