2013-07-02 44 views
0

嘿,伙计们,我知道,使用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的?

谢谢!

+1

这是Symfony2/Doctrine问题还是只是一个学说问题? –

+0

@ThomasPotaire只是一个学说问题,但它使用Symfony包类作为它之前完成的例子。 – ehime

+0

ping,你得到了答案;) –

回答

1

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查询的一个抽象层。如果你需要一个实体管理器,你必须按照上面的文档中提到的那样初始化它,或者你可能找到另一个实体管理器工厂类,你可以“复制”它。

+0

问题在于在Doctrine2的典型安装中没有'ConnectionFactory类'。 Symfony2包中有类,但需要移植。主要的捕获是在构造函数'array $ typesConfig'中,但我不知道他们真正要求的是什么,我假定了magic.conf类型,但显然情况并非如此...... – ehime

+0

正如我所说,你可以复制它。在标准的symfony安装中,'$ typesConfig'似乎是一个空数组。但简单调用'DriverManager :: getConnection($ connectionParams,$ config)'之间的区别在哪里呢? –

相关问题