Переключение соединения БД в моделях Doctrine - PullRequest
1 голос
/ 25 января 2011

Я исследую производительность Zend + Doctrine в существующей системе баз данных шардов.Большинство моделей моих приложений подключаются к основной базе данных (db1), в то время как некоторым моделям необходимо динамически подключаться к различным базам данных (db2, db3 и т. Д.)

Из моделей, которые подключаются к другой базе данных, мне нужноэто простой способ переключения соединения.Есть ли какой-нибудь метод в Doctrine_Record, который я могу переопределить, чтобы предоставить новый экземпляр соединения?

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Не нужно ничего переопределять.Вы просто создаете столько соединений, сколько вам нужно (по умолчанию у вас должно быть одно соединение, которое также имеет имя, теперь у вас n соединений с разными именами.

$conn1 = Doctrine_Manager::connection('mysql://username:password@localhost/database1', 'connection1');
$conn2 = Doctrine_Manager::connection('mysql://username:password@localhost/database2', 'connection2');

Разные моделимогут быть связаны с различными соединениями. Я всегда помещаю их в базовые модели.

Doctrine_Manager::connection()->bindComponent('Your_Model', 'connection1');

В качестве альтернативы, вы можете использовать метод диспетчера подключений

setCurrentConnection('connection1')
0 голосов
/ 26 января 2011
...