Symfony2:连接到其他数据库,没有所有附加功能?

时间:2014-01-22 14:11:31

标签: symfony doctrine

我希望连接到另一个数据库以运行一些任意查询,但不想使用实体和存储库等来描述数据。 Symfony不会“拥有”这些数据或管理任何有关它的信息。我只是在寻找有关如何:

的建议
  1. 将连接参数放在我的config.yml文件(和parameters.yml)
  2. 使用Symfony组件(Doctrine?)进行连接以运行预准备语句。
  3. 我能找到的唯一类似问题是Temporary Connection to External Database with Symfony/Doctrine,但这似乎适用于Symfony 1,因为Symfony 2中不存在Doctrine_Manager

1 个答案:

答案 0 :(得分: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对象本身创建服务。我没有一个方便的例子,但它很容易做到。这将彻底消除对Doctrine 2的需求。