2014-01-22 3 views
4

Я ищу подключение к другой базе данных для запуска некоторых произвольных запросов, но не хочу описывать данные с использованием сущностей и репозиториев и т. П. Symfony не будет «владеть» этими данными или управлять им. Я просто ищу рекомендации о том, как:Symfony2: подключиться к дополнительной базе данных, без дополнительных дополнительных услуг?

  1. Поместите параметры соединения в моем файле config.yml (и parameters.yml)
  2. Connect сделать это с помощью компонентов Symfony (? Doctrine), чтобы запустить подготовленные заявления ,

Единственный подобный вопрос я смог найти Temporary Connection to External Database with Symfony/Doctrine, но, кажется, относится к Symfony 1, так как Doctrine_Manager не существует в Symfony 2.

+0

ну, это звучит, и вам нужно только [слой абстракции] (http://www.doctrine-project.org/projects/dbal.html) для доктрины вместо полного ORM. Просто создайте несколько сервисов, содержащих ваши пользовательские запросы, и вы уйдете :) – Songo

ответ

7

http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

Показывает, как настроить множественный Doctrine 2 DBAL (игнорировать часть менеджера объектов).

doctrine: 
dbal: 
    default_connection: default 
    connections: 
     default: 
      driver: "%database_driver%" 
      host:  "%database_host%" 
      port:  "%database_port%" 
      dbname: "%database_name%" 
      user:  "%database_user%" 
      password: "%database_password%" 
      charset: UTF8 
     customer: 
      driver: "%database_driver2%" 
      host:  "%database_host2%" 
      port:  "%database_port2%" 
      dbname: customer 
      user:  "%database_user2%" 
      password: "%database_password2%" 
      charset: UTF8 

Это даст услугу, называемую doctrine.dbal.customer_connection, которую вы можете вытащить из контейнера обслуживания.

Соединение DBAL представляет собой тонкую оболочку вокруг стандартного объекта соединения PHP PDO.

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html

показывает, как использовать соединение. В основном то же, что и объект PDO.

Вы также можете просто создать сервис, используя сам объект PDO. У меня нет примера, удобного, но его достаточно легко сделать. Это полностью устранит необходимость в Доктрине 2.

+0

Спасибо! Именно то, что мне нужно. Я был немного сторонником из документов Symfony, потому что все они, казалось, подразумевали, что Symfony будет владеть данными любой дополнительной базы данных. – Brian

+0

до точки ... точно как всегда @Cerad :) – nifr

Смежные вопросы