从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所以我现在知道我的数据库驱动程序运行正常并且不是问题。
答案 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');
您的代码似乎正确