是否可以使用CodeIgniter使用多个数据库连接运行JOIN查询?

时间:2013-01-26 13:06:23

标签: mysql database codeigniter join

是否可以使用CodeIgniter的活动记录实用程序来连接来自不同数据库的多个表?

据我所知,我必须在database.php中创建两个单独的数据库组,并在模型中手动加载它们:

$this->DB1= $this->load->database('somename1', TRUE);
$this->DB2= $this->load->database('somename2', TRUE);

但是,我不知道如何使用它们从两个独立的数据库中连接多个表。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

据我所知,使用多个数据库实例(即您的$DB1$DB2变量)无法做到这一点。

但是,如果您有一个可以访问这两个数据库的用户,您可以在表名前加上它们的数据库名称,并且它可以工作(至少使用MySQL - 我还没有测试过任何其他内容)。例如,此代码:

$this->load->database('first');
$this->db->select('*')->from('users');
$this->db->join('test.hometowns', 'users.id = second.hometowns.user');
$query = $this->db->get();

将成功运行此查询,返回预期结果:

SELECT * 
FROM (`users`) 
JOIN `second`.`hometowns` ON `users`.`id` = `second`.`hometowns`.`user`;

同样,我只用MySQL测试过这个,其他数据库可能有跨越数据库边界的限制。它还要求用户帐户实际上具有读取两个数据库/表的权限。