【发布时间】:2014-12-01 19:35:16
【问题描述】:
所以我的database.php如下:
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'SOMEHOST',
'port' => 8889,
'login' => 'LOGIN',
'password' => 'PASSWORD',
'database' => 'DB1',
'prefix' => '',
'encoding' => 'utf8',
);
public $db2 = array(
'datasource' => 'Datasources.Freetds',
'persistent' => false,
'host' => 'SOMEHOST',
'port'=> 1433,
'login' => 'LOGIN',
'password' => 'PASSWORD',
'database' => 'DB2',
'prefix' => '',
'encoding' => 'utf8',
);
然后我有一些 SHELL 代码试图“找到”一个 DB 中的某些字段,以便它可以与另一个 DB 中的其他字段交叉检查,如下所示:
(...)
$qry = $this->Model1->find('all', array(
'fields' => array('Model1.id','Model1.field1'),
'conditions' => array(
'Model1.field2' => 'WAITING'),
'recursive' => -1));
$this->loadModel('Model2');
$num_reg=count($qry);
for ($loop=0; $loop<$num_reg;$loop++) {
$registro = $this->Model2->find("first", array(
'recursive' => -1,
'fields' => array ('Model2.field1', 'Model2.field2'),
'conditions' => array ('Model2.field1' => $qry[$loop]['Model1']['field1'])));
var_dump($registro);
(...)
Model1 使用$default,Model2 使用$db2。 Model2.php 如下(sn-p):
public $useTable = 'Table';
public $primaryKey = 'key';
public $useDbConfig = "db2";
不幸的是,CakePHP 似乎没有切换连接和/或 DB,因为我收到了 Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Model2.field1' in 'field list'。
调试显示 CakePHP 在构建 SQL 语句时尝试使用默认数据库 (select ... from DEFAULT.MODEL2TABEL as MODEL2 ....)。
有什么想法吗?
提前致谢!
【问题讨论】:
-
顺便说一句,正如你所见,
persistent在两个配置中都设置为 false
标签: php cakephp cakephp-2.0 cakephp-model