Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Database 在CakePHP 2.0中为模型使用数据库视图_Database_Cakephp_Cakephp 2.0 - Fatal编程技术网

Database 在CakePHP 2.0中为模型使用数据库视图

Database 在CakePHP 2.0中为模型使用数据库视图,database,cakephp,cakephp-2.0,Database,Cakephp,Cakephp 2.0,在从Cake 1.3升级到2.0 I之后,我的所有使用数据库视图而不是表的模型都会出现缺少表的错误。我使用表格的模型仍然可以正常工作。将这些模型更改为使用表可以解决问题,但我需要视图 在过去,这是有效的,因为;视图就像表一样工作。但是,在转到Cake 2.0之后,我得到: 错误:找不到模型myModel的数据库表myView 下面是一个示例模型类: class Hauler extends AppModel { var $useTable = 'hauler_view'; var

在从Cake 1.3升级到2.0 I之后,我的所有使用数据库视图而不是表的模型都会出现缺少表的错误。我使用表格的模型仍然可以正常工作。将这些模型更改为使用表可以解决问题,但我需要视图

在过去,这是有效的,因为;视图就像表一样工作。但是,在转到Cake 2.0之后,我得到:

错误:找不到模型myModel的数据库表myView

下面是一个示例模型类:

class Hauler extends AppModel
{
    var $useTable = 'hauler_view';
    var $primaryKey = 'id';
    var $useDbConfig = 'default';
}
视图
hailer\u视图
在1.3中的应用程序中存在并运行。如果我将模型设置为读取该物理表,则将相同的数据从视图复制到物理表中会起作用

我已经确认我可以通过Cake的原始SQL函数访问数据库视图,所以我可以访问这些视图,只是模型没有看到“表”

如果有必要的话,我正在使用SQLServer2005和sqlsrv驱动程序。我的服务器上安装了SQL Server 2008本机客户端,允许此版本的cake访问SQL Server

是否有办法让CakePHP 2.0中的模型使用视图而不是表?


我已解决此问题,因此我现在知道我的数据库驱动程序运行正常,不是问题所在。

在打开类之前尝试添加以下代码:

App::uses('AppModel', 'Model');

您的代码似乎正确

有几种解决方案可以尝试解决此问题

1-尝试使用来纠正问题: 2-检查以确保模型文件名的命名正确:
app/model/hailer.php
[注意文件和路径上的大小写敏感性] 3-确保模型目录中存在AppModel.php文件。这可能就是问题所在。注意这本书的内容:

app/app_controller.php、app/app_model.php、app/app_helper.php是 现在位于并命名为app/Controller/AppController.php, app/Model/AppModel.php和app/Helper/AppHelper.php

AppModel.php的顶部应包含uses子句:

<?php
App::uses('Model', 'Model');
class AppModel extends Model {

}
?>


您也可以阅读中的AppModel.php更改。

这是一个简单的php 2.0分支,该错误仅影响SQL Server,不允许模型使用SQL Server视图。它将在Cake release 2.0.6中修复。

您的意思是将它放在模型类的文件中,还是放在打开模型的控制器中?无论哪种方式,它都不起作用(因为它扩展了AppModel,所以无论如何它都应该继承这个模型)。我真的不知道这些视图模型有什么不同……是的,CakePHP2是必要的。有趣的是,仍然不起作用,你可以把所有的代码模型都放进去?这就是整个代码类(在本例中,所有的代码类实际上都可以被推断出来),而我并没有定制AppModel。我正在按照cdburgess的建议工作,现在我已经完成了所有这些步骤;AppModel没有定制,所以我在app/Model中没有它,但是将默认的蛋糕复制到该目录中也没有任何作用。升级脚本没有修复所有问题,再次运行它,但仍然存在问题。大多数模型都可以工作,只是没有视图。appmodel/ect进入应用程序/目录是对2.1而不是2.0的更改,但感谢链接,我继续进行了更改,以备将来验证。视图仍然中断。我想接下来要验证的是SQL Server连接以及它如何处理视图。我没有访问权限,因此无法提供任何额外帮助。很抱歉但我很高兴听到设置是正确的,可以排除。这可能是一个特定于2008客户端与2005 server的通信方式的问题?在尝试连接视图时,SQL server日志中是否显示任何内容?SQL server日志中没有任何内容,sqlsrv_errors()没有给出错误消息,cake自己的错误消息只提供堆栈跟踪和缺少的表消息。我会添加堆栈跟踪,但我没有看到任何问题,这都是内部的东西。