Cou*_*les 5 php pdo doctrine-orm
我在一个预先存在的软件中采用了Doctrine,并且希望Doctrine与遗留代码共享相同的PDO连接.
我知道你可以告诉Doctrine使用如此建立的连接:
$em = EntityManager::create(['pdo' => $pdo], $ormConfiguration);
Run Code Online (Sandbox Code Playgroud)
我无法找到主/从连接的正确组合.这是我期望的工作:
$em = EntityManager::create(
[
'wrapperClass' => \Doctrine\DBAL\Connections\MasterSlaveConnection::class,
'master' => ['pdo' => $pdoMaster],
'slaves' => [
['pdo' => $pdoSlave]
]
],
$ormConfiguration
);
Run Code Online (Sandbox Code Playgroud)
这会生成以下错误:
带有消息的未捕获异常'Doctrine\DBAL\DBALException'如果没有为DriverManager :: getConnection()提供PDO实例,则必须使用选项'driver'或'driverClass'.
通过代码阅读,看起来不支持使用Master/Slave与Doctrine建立连接.但我不确定.大多数文档都没有详细介绍使用已建立的连接.
小智 -1
我认为您需要使用创建连接DriverManager::getConnection并在创建实体管理器时使用连接。
这是我找到的一个例子: https ://gist.github.com/ricfrank/d6f6317a1a1434cdc364
$conn = \Doctrine\DBAL\DriverManager::getConnection(array(
'wrapperClass' => 'Doctrine\DBAL\Connections\MasterSlaveConnection',
'driver' => 'pdo_mysql',
'keepSlave' => true,
'master' => array(
'user' => 'ideato',
'password' => 'ideato',
'dbname' => 'db_ideato'
),
'slaves' => array(
array(
'user' => 'ideato',
'password' => 'ideato',
'dbname' => 'db_ideato_slave'
)
)
)
);
$entityManager = EntityManager::create($conn, $config);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |