PHP_Doctrine 2.0 _ Управление соединением - PullRequest
2 голосов
/ 02 мая 2011

В Doctrine 1.2 мы можем получить доступные объекты соединения следующим образом

   $manager = Doctrine_Manager::getInstance();
    $manager->getConnections();

Таким образом, мы можем сделать управление соединением, используя это

Как получить доступные объекты соединения из Doctrine 2.0,У нас есть EntityManager.php в качестве конца доступа. Как мы можем получить доступные объекты соединения в доктрине 2. 0

Пожалуйста, предоставьте ваше предложение и комментарии.

Спасибо и С уважением Ram

Ответы [ 3 ]

3 голосов
/ 06 апреля 2012

Класс Symfony \ Bundle \ DoctrineBundle \ Registry ссылается на все соединения Doctrine и менеджеры сущностей в данном контейнере.

Итак, вы можете прочитать официальный API для полного списка методов: http://api.symfony.com/v2.0.0/Symfony/Bundle/DoctrineBundle/Registry.html

Эти методы могут быть полезны для вас:

  • getConnections ()
  • getConnectionNames ()
  • getEntityManagers ()
  • getEntityManagerNames ()

Внутри контейнера (расширение класса ContainerAware) вы можете сделать это:

$doctrine = $this->getContainer()->get('doctrine') // return a Registry instance
$names = $doctrine->getEntityManagerNames();

var_dump($names);

... или внутри контроллера ...

$doctrine = $this->getDoctrine();
// ...

Вывод в моем случае:

array(2) {
  ["italy"]=>
  string(33) "doctrine.orm.italy_entity_manager"
  ["world"]=>
  string(33) "doctrine.orm.world_entity_manager"
}

ОБНОВЛЕНИЕ ДЛЯ ПОСЛЕДНИХ ВЕРСИЙ ДОКТРИНЫ

  • getEntityManagers () устарело, используйте getManagers () вместо
  • getEntityManagerNames () устарело, используйте getManagerNames () вместо
2 голосов
/ 03 мая 2011

Doctrine 2 имеет только одно соединение на EntityManager.Если вам нужно несколько соединений, вам нужно несколько менеджеров сущностей.

2 голосов
/ 02 мая 2011

Использовать EntityManager :: getConnection () .

ОБНОВЛЕНИЕ: чтобы получить доступные соединения из конфигурации, которую вы могли бы попробовать :

class UserController extends Controller
{
    public function indexAction()
    {
        $defaultConn1 = $this->get('doctrine.dbal.connection');
        $defaultConn2 = $this->get('doctrine.dbal.default_connection');
        // $defaultConn1 === $defaultConn2

        $customerConn = $this->get('doctrine.dbal.customer_connection');
    }
}
...