我正在尝试开发一个不使用数据库但仍有一些模型的应用程序。
第一个问题:但是看看Cake的数据库配置(APP / Lib / Cake / Model / ConnectionManager.php,第69行),它试图包含文件Config / database.php。
如果文件不存在,我会收到2个警告。如果它存在(即使它是完全空的)都可以。我想澄清一下即使没有模型也会发生这种情况。
第二个问题:如果我尝试使用模型,我会收到错误:
Missing Datasource Configuration
Error: The datasource configuration default was not found in database.php.
无论Config / database.php文件是否存在,都会发生这种情况。
最后,我指定模型(包括AppModel)将属性$ useTable设置为false,但似乎没有区别。
但我注意到,在使用数据库的应用程序中,只有少数模型不使用它(但整个应用程序使用它),一切正常。
我发现this提出了一个解决方案,然后就是在网络上找到的解决方案。
但是,在评论中,我读到Lorenzo说:
这根本没有任何意义,CakePHP 2.0不会尝试 执行任何数据库连接,除非您要求它执行此操作
在我看来它没有,也许CakePHP不执行任何查询但仍然希望配置数据库。是这样吗?或者我错过了什么?
谢谢。
答案 0 :(得分:4)
但是,在实际需要之前,CakePHP不会尝试连接到数据库;
__call()
方法;此方法将首先检查Behavior是否能够处理该调用,否则将调用该数据库。例如。使用$this->Mymodel->doSomething()
将导致CakePHP尝试打开数据库连接并在数据库中执行doSomething
。 Model
, 的实例 ,导致连接被打开。实施例
class PostsController extends AppController {
// This controller does not use a Model
public $uses = false;
public function index() {
// CakePHP will construct a 'Post' model here
$this->Post->find('something');
}
}
说完了。在大多数情况下,最好让模型使用数据源;数据源不必须是数据库,但也可以是Twitter Feed
或静态Array()
。
拥有数据源简化了大多数任务(例如,您只需执行find(....)
即可从源获取数据,无论是否为数据库。