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 2.1 - 保存(和创建)多个连接模型和关联模型
CakePHP 3:上传多个文件并将文件名保存在关联模型中?