Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server CakePHP finderQuery与SQL Server一起工作吗?我在哪里调试它?_Sql Server_Cakephp - Fatal编程技术网

Sql server CakePHP finderQuery与SQL Server一起工作吗?我在哪里调试它?

Sql server CakePHP finderQuery与SQL Server一起工作吗?我在哪里调试它?,sql-server,cakephp,Sql Server,Cakephp,我是cakePHP新手,所以我可能忽略了明显的问题 系统正在使用Microsoft SQL Server 2005作为数据库运行最新下载。我理解这有点不寻常,但修复了URL重写后,我没有看到其他问题 我想使用自定义finderQuery,但我甚至无法替换默认值。特别是如果我使用 var $hasMany = array( 'RecyclateTypeConversion' => array( 'className' => 'RecyclateT

我是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):未定义索引: 循环类型转换 [CORE\cake\libs\model\datasources\dbo\u source.php, 第1099行]

但是,SQL调试输出确认查询本身运行良好并返回4条记录,并且在未指定finderQuery时视图运行良好。我也尝试过其他的hasMany表——有着完全相同的问题

我试图用特定的字段选择替换“全选”,但仍然看到相同的结果。当然,根据手册,查询看起来是正确的-那么问题是什么(它可能与使用MSSQL有关吗?)


编辑:另外,由于这还没有找到任何答案,那么调试它的最佳方法是什么?我已经开始搜索cake调试类,但到目前为止,还没有任何结果能够启发我。当然,如果出现问题,我会将修复程序提交回项目。

您是否尝试过

您是否检查过实际上存在一个名为
RecyclateTypeConversion
的模型,并且根据CakePHP约定,它的文件名存在?也就是说,是否有一个
models/recyclate\u type\u 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插件,并将导致错误的查询日志和查找结果的调试输出发回给我们。

    您正在运行什么版本的cake?我正在运行几周前下载的1.3.8。我想升级到1.3.9,但我在修复列表中没有看到任何解决问题的方法。我检查了这个-没有,我没有生成模型。然而不幸的是,这样做并不能解决问题。我没有SQL Server来为您测试它,但我的第二个猜测是,通过使用
    finderQuery
    Cake,返回的数据不会以通常的格式存储(即
    $this->data[Model][field]
    ),而是以不同的格式存储(通常
    $this->data[0]
    等)这就是未定义索引错误的来源。您不能在收到错误之前对返回的数据执行
    debug()
    吗?当然,您尝试过将其剥离回来-结果相同。不过,我对cake还不熟悉——你所说的可包含查询是什么意思?我愿意接受另一种方式。“可控制”是一种你可以使用的行为。您必须添加到$actAs,然后才能像这样将模型添加到find查询中:'contain'=>array('modelname'),cake将添加数据