Можем ли мы использовать доктрину и модель Zend_db_table рядом? - PullRequest
1 голос
/ 18 февраля 2012

У меня есть один маленький Zend-проект, который уже использует модель Zend_db_table, я пытаюсь расширить этот проект, чтобы я мог использовать доктрину в новых контроллерах и моделях, оставляя старые модели такими, какие они есть.Возможно ли это?

1 Ответ

0 голосов
/ 18 февраля 2012

Загрузка и использование API обоих DBAL должны быть простыми.

Мне кажется, что основной проблемой является повторное использование соединения с БД, то есть один запрос, путь выполнения которого использует как Doctrine, так и Zend_Db, не должен открывать отдельные соединения.

Похоже, что Doctrine\DBAL\Connection имеет метод getWrappedConnection(), который возвращает, например, соединение PDO (фактически подкласс класса PDO SPL, но все еще является экземпляром PDO). В принципе, вы могли бы сначала загрузить Doctrine, захватить это соединение и каким-то образом «передать это» в Zend_Db_Adapter. Однако, хотя я вижу метод с именем Zend_Db_Adapter_Abstract::getConnection(), я не вижу метод с именем setConnection(). Возможно, создать пользовательский подкласс для нужного Zend_Db адаптера?

Другая проблема, которую я вижу, заключается в том, что Doctrine\DBAL\Connection::getWrappedConnection() фактически открывает соединение с БД. Если мы вызовем это во время начальной загрузки и затем передадим это соединение стороне Zend_Db, то мы потеряем функцию ленивого соединения обоих DBAL.

Конечно, если никакой путь выполнения не должен вызывать как Doctrine, так и Zend_Db, то, возможно, проблем нет. Просто загрузите их оба и позвольте вашему коду вызывать тот, который ему нужен. И если у вас есть вычислительная мощность, чтобы справиться с этим, то, возможно, два соединения на запрос не являются убийцей игры (хотя это кажется мне довольно серьезным).

Просто мысли вслух.

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