【发布时间】:2014-03-19 18:22:11
【问题描述】:
我正在尝试在控制器中使用 ClassRegistry::init('ModelName') 或 loadModel('ModelName') 动态加载模型。
我的 database.php 配置中定义了两个数据库:
配置/数据库.php
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'username',
'password' => 'password',
'database' => 'database1',
'prefix' => '',
);
public $database2 = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'same_username',
'password' => 'same_password',
'database' => 'database2',
'prefix' => '',
//'encoding' => 'utf8',
);
我遇到的问题是利用 Cake 动态生成模型的能力从 database2 中正确加载和引用表。存储在 database2 中的表没有(也不会)关联“ModelName.php”。
我尝试了以下方法:
// Method 1
$this->FirstTable->setDataSource('database2');
ClassRegistry::init('TableFromSecondDatabase')->find('all');
$data = $this->TableFromSecondDatabase->find('all');
// Method 2
$this->loadModel('TableFromSecondDatabase');
$this->TableFromSecondDatabase->find('all');
这两种方法都给我以下错误:
Error: Table TableFromSecondDatabase for model database 2 was not found in datasource default.
【问题讨论】:
标签: php cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3