Как получить доступ к данным между базами данных в MySQL? - PullRequest
1 голос
/ 22 сентября 2009

Я работаю в проекте, который разделен на несколько модулей. Каждый модуль имеет свою собственную независимую базу данных в MySQL, но теперь модули должны получать данные между ними. Например, мы собираемся разработать новый модуль «admin», а все остальные модули должны иметь доступ к данным в базе данных «admin». Я знаю, что могу сделать запрос как

select * from admin.table

для получения данных из другой базы данных, но каждый модуль (и новый модуль "admin") создаются в CakePHP. Я думаю, что одно из возможных решений - использовать что-то вроде синонимов (например, в Oracle или SQL Server), но MySQL не поддерживает это. У кого-то есть идея получше? Спасибо

Ответы [ 3 ]

0 голосов
/ 22 сентября 2009

Я могу ошибаться, но я думаю, что запрос основан на

select * from database.owner.table ... и подразумеваемым владельцем будет "dbo" (владелец базы данных). Итак, вы МОЖЕТЕ сделать следующее ...

выберите a1. , b1. из database1.table1 a1, database2.table2 b1, где a1.fld1 = b1.fld1 ...

0 голосов
/ 22 сентября 2009

У меня такое чувство, что CakePHP может обрабатывать связи между базами данных. Попробуйте установить $ useDbConfig для каждой модели для подключения к соответствующей базе данных. CakePHP должен сгенерировать несколько запросов (по крайней мере, по одному на соединение с базой данных) и объединить результаты для вас. Этот подход должен хорошо работать для простых отношений, но может не быть полной поддержки таких отношений, как HABTM.

0 голосов
/ 22 сентября 2009

Как насчет использования представлений:

create view admin_table as select * from admin.table

Тогда вам просто нужно установить $tableName на admin_table.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...