eristoddle
3/13/2015 - 4:39 PM

Multiple database connections in Phalcon PHP Framework

Multiple database connections in Phalcon PHP Framework

<?php

return new \Phalcon\Config([

    'databases' => [
        'default' => 'master',

        'master' => [
            'adapter' => 'Mysql',
            'host' => 'localhost',
            'username' => 'root',
            'password' => 'root',
            'dbname' => 'phalcon',
            'persistent' => true,
            'charset' => 'utf8'
        ],

        'postgres' => [
            'adapter' => 'Postgresql',
            'host' => 'localhost',
            'username' => 'postgres',
            'password' => 'postgres',
            'dbname' => 'phalcon',
            'persistent' => true,
            'charset' => 'utf8'
        ],
    ],
]);
<?php
//...
protected $connection;

public function initialize()
{
    $defaultConnection = $this->di->get('config')
        ->get('databases')
        ->get('default');
    $this->connection = $this->di->get($defaultConnection);
}
<?php
//...
foreach ($config->databases as $db => $cred) {
            $this->di->set($db, function () use ($cred) {
                $adaptor = "\\Phalcon\\Db\\Adapter\\Pdo\\{$cred->adapter}";
                return new $adaptor([
                    'host' => $cred->host,
                    'username' => $cred->username,
                    'password' => $cred->password,
                    'dbname' => $cred->dbname
                ]);
            });
        }
//...