【问题标题】:Multiple databases in Symfony2Symfony2 中的多个数据库
【发布时间】:2014-04-27 15:58:01
【问题描述】:

我有一个具有两个数据库连接的应用程序。第一个数据库是应用程序自己的数据库,第二个数据库来自另一个应用程序(相同的服务器,不同的子域)。

对于第二个数据库上的 SQL 查询,我使用服务。

services.yml

login.company:
    class: JP\CoreBundle\Service\Login\CompanyService
    arguments:
        em: "@doctrine.orm.login_entity_manager"

CompanyService.php

class CompanyService {    
    private $_em;

    public function __construct(EntityManager $em){
        $this->_em = $em;
    }

    public function getSomethingBySomething($something){ // Intentionally obscured method and parameter name
        $conn = $this->_em->getConnection();

        $sql = ''; // Intentionally removed SQL query

        $stmt = $conn->prepare($sql);
        $stmt->bindParam('something', $something); // Intentionally obscured real name to something
        $stmt->execute();

        return ($stmt->rowCount() == 1) ? $stmt->fetch(Query::HYDRATE_ARRAY) : false;
    }
}

config.yml

doctrine:
    dbal:
        default_connection: analysis
        connections:
            analysis:
                driver:   "%database_driver1%"
                host:     "%database_host1%"
                port:     "%database_port1%"
                dbname:   "%database_name1%"
                user:     "%database_user1%"
                password: "%database_password1%"
                charset:  UTF8
            login:
                driver:   "%database_driver2%"
                host:     "%database_host2%"
                port:     "%database_port2%"
                dbname:   "%database_name2%"
                user:     "%database_user2%"
                password: "%database_password2%"
                charset:  UTF8
    orm:
        default_entity_manager: analysis
        entity_managers:
            analysis:
                connection: analysis
                mappings:
                    JPCoreBundle: ~
            login:
                connection: login
        auto_generate_proxy_classes: "%kernel.debug%"

问题:在 Symfony2 环境中正确使用多个数据库是否正确?能不能改进一下?

【问题讨论】:

  • 这个问题属于Code Review,因为它的代码没有具体问题。
  • 对我来说看起来不错,只是您应该使用 DQL 或 QueryBuilder 而不是直接使用连接。

标签: php mysql sql database symfony


【解决方案1】:

这是在 Symfony2 中正确使用多个数据库吗? 环境?

这是Symfony2中多个数据库的正确使用。

能不能改进一下?

在 Symfony2 中唯一与使用多个数据库没有直接关系的改进(如 cmets 中所述)是使用 DQL 或 QueryBuilder 而不是直接使用连接。

【讨论】:

    猜你喜欢
    • 2012-08-03
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多