Doctrine2没有Symfoy2的多个数据库



我知道在Symfony2中使用Doctrinebundle可以在Doctrine下实例化多个DB连接。。。

$connectionFactory = $this->container->get('doctrine.dbal.connection_factory');
$connection = $connectionFactory->createConnection(array(
    'driver'   => 'pdo_mysql',
    'user'     => 'foo_user',
    'password' => 'foo_pass',
    'host'     => 'foo_host',
    'dbname'   => 'foo_db',
));

我很好奇,如果你使用的是纯粹主义,情况是否如此?,我已经通过Composer这样建立了条令…

{
    "config": {
        "vendor-dir": "lib/"
    },
    "require": {
        "doctrine/orm": "2.3.4",
        "doctrine/dbal": "2.3.4"
    }
}

一直在找我的ConnectionFactory课程,但在任何地方都看不到?我需要使用Symfony2吗?

我应该从DoctrineBundle下载ConnectionFactory.php并将其包含在我的DBAL文件夹中吗??idk?

捆绑包仅在symfony所需的上下文中,它将orm封装到symfony基础设施(服务等)中。要纯粹使用orm,您应该阅读orm:安装和配置。正如您所看到的,您必须使用EntityManager::create($dbParams, $config)自己创建一个实体管理器,所以只需为不同的数据库创建不同的实体管理器即可。

对于DBAL的使用,您应该阅读DBAL:Configuration并看到,连接可以简单地通过DriverManager::getConnection($connectionParams, $config);获得。但是,如果您确信ConnectionFactory不依赖于符号,并且您确实需要它,您可以尝试将它复制到您的代码中,并构建一个新的工厂来获得DBAL连接。

$connectionFactory = new ConnectionFactory(array());
$connection = $connectionFactory->createConnection(array(
    'driver'   => 'pdo_mysql',
    'user'     => 'foo_user',
    'password' => 'foo_pass',
    'host'     => 'foo_host',
    'dbname'   => 'foo_db',
));

但请注意,这是一个DBAL连接,即它是一个位于PDO之上的抽象层,仅用于纯SQL查询。如果你需要一个实体管理器,你必须按照上面的文档中提到的那样初始化它,或者你可能找到了另一个可以"复制"的实体管理器工厂类。

相关内容

  • 没有找到相关文章

最新更新