我需要在cakephp 3中进行dunamic连接。我想根据我在configManager :: config中传递数据库名来更改数据库连接。 并且我想在连接更改后在所有控制器中更改连接。
AppBehavior代码如下,
的ConnectionManager ::降(' myconn1&#39);
$ config = ConnectionManager :: config(' myconn1',[
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>${hibernate.version}</version>
</dependency>
]); 的ConnectionManager ::得到(&#39; myconn1&#39);
在AppBehavior中的上述代码之后,我必须在所有控制器中使用新连接。
答案 0 :(得分:0)
public function ChangeClientConnection($databaseDetails)
{
if(isset($databaseDetails) && !empty($databaseDetails))
{
ConnectionManager::drop('conn1');
$config = ConnectionManager::config('conn1', [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => true,
'host' => $databaseDetails['res_host'],
'username' => $databaseDetails['res_login'],
'password' => $databaseDetails['res_password'],
'database' => $databaseDetails['res_database'],
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => false,
]);
$conn = ConnectionManager::get('conn1');
ConnectionManager::alias('conn1', 'default');
}
else
{
$conn = ConnectionManager::get('default');
}
return $conn;
}