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

时间:2012-01-26 20:47:38

标签: database cakephp cakephp-2.0

从Cake 1.3升级到2.0后,我的所有使用数据库视图而不是表的模型都会丢失表错误。我使用表的模型仍然可以正常工作。更改这些模型以使用表可以解决问题,但我需要查看。

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

  

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

以下是Model类的示例:

class Hauler extends AppModel
{
    var $useTable = 'hauler_view';
    var $primaryKey = 'id';
    var $useDbConfig = 'default';
}

视图hauler_view存在并在1.3中的应用程序中工作。如果我将模型设置为读取该物理表,则可以将视图中的相同数据复制到物理表中。

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

如果重要的话,我正在使用带有sqlsrv驱动程序的SQL Server 2005。我在我的服务器上安装了SQL Server 2008 Native Client,允许此版本的cake访问SQL Server。

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

我解决了this related problem所以我现在知道我的数据库驱动程序运行正常并且不是问题。

3 个答案:

答案 0 :(得分:1)

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

1-尝试使用upgrade shell更正问题: 2-检查以确保模型文件名称已正确命名:app/Model/Hauler.php [注意文件和路径上的区分大小写] 3-确保Model目录中存在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 {

}
?>

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

答案 1 :(得分:1)

这是Cake PHP 2.0分支中的Open Bug,该错误仅影响SQL Server,不允许模型使用SQL Server视图。它将在Cake 2.0.6中修复。

答案 2 :(得分:0)

尝试在打开课程之前添加此代码:

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

您的代码似乎正确