首页 > 解决方案 > Symfony 2.8 两个数据库连接

问题描述

我需要连接到一个外部数据库,我只需要在一个表中做一个简单的查询,所以我认为我不需要创建一个新的实体管理器。我相信所有配置都设置正确,但我仍然没有连接到新数据库。所以我错过了一些东西,但找不到什么,这是我的文件:

# Doctrine Configuration
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver: pdo_mysql
                host: '%database_host%'
                port: '%database_port%'
                dbname: '%database_name%'
                user: '%database_user%'
                password: '%database_password%'
                charset: UTF8
                # if using pdo_sqlite as your database driver:
                #   1. add the path in parameters.yml
                #     e.g. database_path: '%kernel.root_dir%/data/data.db3'
                #   2. Uncomment database_path in parameters.yml.dist
                #   3. Uncomment next line:
                #path: '%database_path%'

            database2:
                driver: pdo_mysql
                host: '%database2_host%'
                port: '%database2_port%'
                dbname: '%database2_name%'
                user: '%database2_user%'
                password: '%database2_password%'
                charset: UTF8

    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

parameters:
#Set_Goals Database
    database_host: 127.0.0.1
    database_port: null
    database_name: set_goals
    database_user: root
    database_password: null

#Database2 Database
    database2_host: 127.0.0.1
    database2_port: null
    database2_name: second
    database2_user: root
    database2_password: null
Repository:
public function getAccounts(){
    $conn = $this->getEntityManager()->getConnection('database2');
    $sql = 'SELECT * FROM leme_account';
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    return $stmt->fetchAll();
}

错误:执行“SELECT * FROM leme_account”时发生异常:

SQLSTATE [42S02]:未找到基表或视图:1146 表 'set_goals.leme_account' 不存在

set_goals 数据库是默认连接。

如果我在这里遗漏了一些非常简单的东西,请提前致谢,但我是 Symfony 和一般编程的新手,我遵循了文档和一些相关问题,但无法使其工作。

标签: symfonydoctrine

解决方案


与此同时,我发现了问题......这是一个新手错误。我将我的方法放在另一个实体的存储库中。当我直接添加到控制器时,它起作用了。感谢您的回答。


推荐阅读