是否可以使用 CodeIgniter 的活动记录实用程序连接来自不同数据库的多个表?
我知道我必须在database.php
模型中创建两个单独的数据库组并手动加载它们:
$this->DB1= $this->load->database('somename1', TRUE);
$this->DB2= $this->load->database('somename2', TRUE);
但是,我不知道如何使用它们连接来自两个独立数据库的多个表。
我怎样才能做到这一点?
是否可以使用 CodeIgniter 的活动记录实用程序连接来自不同数据库的多个表?
我知道我必须在database.php
模型中创建两个单独的数据库组并手动加载它们:
$this->DB1= $this->load->database('somename1', TRUE);
$this->DB2= $this->load->database('somename2', TRUE);
但是,我不知道如何使用它们连接来自两个独立数据库的多个表。
我怎样才能做到这一点?
据我所知,没有办法使用多个数据库实例(即你的$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 对此进行了测试,其他数据库可能对跨越数据库边界有限制。它还要求用户帐户实际上具有读取两个数据库/表的权限。