cakephp中的动态连接3

时间:2016-07-11 11:11:14

标签: cakephp-3.0

我需要在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中的上述代码之后,我必须在所有控制器中使用新连接。

1 个答案:

答案 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;
}