php - Symfony2 中的多个数据库

标签 php mysql sql database symfony

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

对于第二个数据库上的 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 环境中正确使用多个数据库吗?可以通过某种方式改进吗?

最佳答案

Is this correct use of multiple databases in Symfony2 environment?

这就是Symfony2中多数据库的正确使用方式。

Could it be improved somehow?

与 Symfony2 中使用多个数据库不直接相关的唯一改进(如评论中所述)是使用 DQL 或 QueryBuilder,而不是直接使用连接。

关于php - Symfony2 中的多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23325560/

相关文章:

php - Opencart 禁用 Mysql/Php 错误显示

mysql - 如何使用嵌套选择

php - Adodb 使用 php 和 PostgreSQL

mysql - 如何从其他模式表向mysql数据库插入值?

MySQL从一个表中减去第二个表中的某些行的值

php - Symfony 中基于接口(interface)的 DI 配置

php - 在 Zend Framework 2 中禁用某些选项选择

mysql - 如何找到适合我的 mysql 版本的语法?

在同一条目上并行更新的 Mysql 锁(使用 sidekiq)

php - 推特和 PHP : permanent access token