cakephp 多个数据库中的关联 Cakephp 2

Posted

技术标签:

【中文标题】cakephp 多个数据库中的关联 Cakephp 2【英文标题】:Association in cakephp multiple databases Cakephp 2 【发布时间】:2015-09-08 04:24:45 【问题描述】:

如何从多个数据库中获取数据。

例子-

two database -> db_1 and db_2.
two tables -> users in db_1 database and countries in db_2   
    users table -> id , username, country_id, status
    countries table -> id, name, status

并且关联是 -

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

class User extends AppModel 

var $name = 'User';
var $useDbConfig = 'bd_1';
var $belongsTo = array('Country'=>array('className'=>'Country'), );

在控制器中,当我使用此查询时,会出现错误

    $data = $this->User->find('all', array('conditions' => array('Country.status' => 1)));

    $this->set('data', $data);

错误:SQLSTATE[42S22]:找不到列:1054 未知列 'where 子句中的'Country.status'

【问题讨论】:

您能否举例说明您希望从上述查询中收到的数据? 【参考方案1】:

您不能立即执行此操作,因为如果您在 Config/database.php 中配置了两个数据库,它们将处于不同的连接中。

您可以做的是在 php 中进行两个单独的查找并加入数组数据,或者,如果您确实需要这样做并且数据库位于同一服务器中,请进行自定义查询:

$db = $this->User->getDataSource();    
$data = $db->fetchAll('SELECT * from db_1.users User LEFT JOIN db2.countries Country');

【讨论】:

以上是关于cakephp 多个数据库中的关联 Cakephp 2的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 3 连接表关联

CakePHP 2.1 - 保存(和创建)多个连接模型和关联模型

CakePHP:当有多个关联记录时如何指定返回字段

CakePHP 3:上传多个文件并将文件名保存在关联模型中?

在 CakePHP 3 中保存多个 belongsToMany 关联

CakePHP 1.3 关联