3

Is it possible to join multiple tables from different databases using CodeIgniter's active record utilty?

I understand that I have to create two separate database group in database.php and load them manually inside the model:

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

However, I don't know how to use them join multiple tables from two separate databases.

How can I accomplish this?

4

1 に答える 1

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でのみテストしたものであり、他のデータベースにはデータベースの境界を越えることに関する制約がある可能性があります。また、ユーザーアカウントには、両方のデータベース/テーブルを読み取るためのアクセス許可が実際にある必要があります。

于 2013-01-26T13:37:35.480 に答える