Doctrine2没有Symfony2的多重数据库?
嘿,伙计们,我知道,使用Doctrinebundle在Symfony2中,可以实例化原则下的多个数据库连接...Doctrine2没有Symfony2的多重数据库?
$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',
));
我很好奇,如果这是,如果你使用,虽然学说鎺的情况?我已经通过像这样作曲家设立主义......
{
"config": {
"vendor-dir": "lib/"
},
"require": {
"doctrine/orm": "2.3.4",
"doctrine/dbal": "2.3.4"
}
}
而且一直在寻找我的ConnectionFactory
类,但我没有看到它的任何地方?我需要使用Symfony2来做到这一点吗?
我应该从DoctrineBundle下载ConnectionFactory.php并将它包含在我的DBAL文件夹中? IDK的?
谢谢!
bundle只在symfony所需的上下文中,它将orm包装到symfony的基础结构(服务等)中。为了纯粹使用orm,你应该阅读ORM: Installation and Configuration。如你所见,你必须自己创建一个实体管理器,使用EntityManager::create($dbParams, $config)
,所以只需为不同的数据库创建不同的实体管理器。
对于DBAL使用你应该阅读DBAL: Configuration看到,连接可以简单地获得槽DriverManager::getConnection($connectionParams, $config);
但如果你确信ConnectionFactory
没有依赖于symfony的东西,你真的需要它,你可以尝试把它复制到你的代码并构建一个新的工厂来获得一个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查询的一个抽象层。如果你需要一个实体管理器,你必须按照上面的文档中提到的那样初始化它,或者你可能找到另一个实体管理器工厂类,你可以“复制”它。
问题在于在Doctrine2的典型安装中没有'ConnectionFactory类'。 Symfony2包中有类,但需要移植。主要的捕获是在构造函数'array $ typesConfig'中,但我不知道他们真正要求的是什么,我假定了magic.conf类型,但显然情况并非如此...... – ehime
正如我所说,你可以复制它。在标准的symfony安装中,'$ typesConfig'似乎是一个空数组。但简单调用'DriverManager :: getConnection($ connectionParams,$ config)'之间的区别在哪里呢? –
这是Symfony2/Doctrine问题还是只是一个学说问题? –
@ThomasPotaire只是一个学说问题,但它使用Symfony包类作为它之前完成的例子。 – ehime
ping,你得到了答案;) –