问题描述
|
我是CakePHP的新手,所以我可能会错过显而易见的东西。
系统正在使用Microsoft sql Server 2005作为数据库运行最新的下载。我知道这有点不寻常,但是修复了URL重写之后,我没有看到其他问题。
我想使用自定义finderQuery,但是我什至无法替换默认值。特别是如果我使用
var $hasMany = array(
\'RecyclateTypeConversion\' => array(
\'className\' => \'RecyclateTypeConversion\',\'foreignKey\' => \'recyclate_type_id\',\'dependent\' => false,\'conditions\' => \'\',\'fields\' => \'\',\'order\' => \'\',\'limit\' => \'\',\'offset\' => \'\',\'exclusive\' => \'\',\'finderQuery\' => \'select RecyclateTypeConversion.* from recyclate_type_conversions AS RecyclateTypeConversion WHERE RecyclateTypeConversion.recyclate_type_id IN ({$__cakeID__$});\',\'counterQuery\' => \'\'
),};
我看到这个错误
注意(8):未定义索引:
RecyclateTypeConversion
[CORE \\ cake \\ libs \\ model \\ datasources \\ dbo_source.PHP,
1099行]
但是,sql调试输出会确认查询本身运行正常并返回4条记录,并且在未指定finderQuery的情况下,视图可以完美运行。我也尝试过其他hasMany表-完全相同的问题。
我试图将全选替换为特定的字段选择,但仍然看到相同的结果。当然,根据手册,查询看起来是正确的-那么问题是什么(它可能与使用MSsql有关?)
编辑:而且,由于这还没有得到任何答案,因此,调试此方法的最佳方法是什么?我已经开始学习蛋糕调试类了,但是到目前为止,还没有结果启发我。当然,如果有问题,我将把修复提交给项目。
解决方法
您是否检查过是否存在名为
RecyclateTypeConversion
的模型,并且根据CakePHP约定是否存在带有文件名的模型?即是否有models/recyclate_type_conversion.php
,并且在该文件中,是定义为RecyclateTypeConversion
的模型的名称。
您收到的错误似乎暗示该模型名称有问题,因为它找不到关联的索引。
,尝试从选择中删除别名-\“ AS RecyclateTypeConversion \”部分中的转换应为您处理。我还喜欢将自定义查询用双引号引起来。我可能只是偏执狂,但是字符串解析错误在之前一直困扰着我。
var $hasMany = array(
\'RecyclateTypeConversion\' => array(
\'className\' => \'RecyclateTypeConversion\',\'foreignKey\' => \'recyclate_type_id\',\'dependent\' => false,\'finderQuery\' => \"select * from recyclate_type_conversions AS RecyclateTypeConversion WHERE RecyclateTypeConversion.recyclate_type_id IN ({$__cakeID__$});\",);
另外,我强烈建议您使用DebugKit插件,并将导致错误的查找结果的调试日志和调试输出回发给我们。
,你一步一步地经历了吗?
尝试获取所有(所有数据)
尝试条件
尝试使用“ containable \”行为来创建您的查询,我认为这使思考变得容易得多
,您是否尝试过CakePHP调试工具包