cakephp中的多个数据库Cakephp 2

时间:2015-09-08 04:24:46

标签: cakephp associations cakephp-2.0 multiple-databases

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

示例 -

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'), );
}

当我使用此查询时,在Controller中,然后出现错误

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

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

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

1 个答案:

答案 0 :(得分:0)

您无法开箱即用,因为如果您在Config / database.php中配置了两个数据库,它们将处于不同的连接中。

你可以做的是制作两个独立的发现并在php中加入数组数据,或者,如果你真的需要这样做并且数据库在同一个服务器上,那就进行自定义查询:

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