我有以下关联:
网站 - hasMany - Sitekey Sitekey - belongsTo - 网站
sites.id是主键sitekeys.site_id是外键
在站点模型中:var $ hasMany = array('Sitekey');
查询:$ this-> find('all',array('conditions'=> array('Sitekey.keyword_id'=> $ key),'recursive'=> 1));
使用该关联递归获取(找到'all')不起作用 . 我试过明确定义类名,外键等...
作为最后的努力,我只是尝试将站点模型更改为:var $ hasOne = array('Sitekey');
当我对此进行递归查找'all'时,它会进行连接并正确返回数据 . 知道我做错了什么或者我可以用来调试/修复问题的技术吗?
谢谢!
2 回答
您是否尝试在指定hasMany时提供类和键(并且就此而言属于belongsTo)?
对我来说,当Inflector没有正确地单数化和复数你的名词时,就会发生这种情况 . 我已经做了一个练习,总是先检查一下 .
如果这确实有效,那么理论上你应该看看为什么它没有认识到它 . 创建另一个模型栏(或它知道的其他单词),并为其提供与sitekey相同的关联,并查看它是否在您的站点中有效 . 如果是这样,那么它很可能是Sitekey上的变形器 .
它可能像这样简单吗?你使用它的$ this关键字(假设我们在控制器中)将是控制器的实例,而不是模型 . 因此,您的结果将基于控制器的默认模型 . 确保您的控制器“使用”您要查询的模型 .
我建议也考虑一下可容纳的行为 . 您可以获得更多控制而不仅仅是使用递归 .