Phalcon連接多個數據庫的時候需要配置多個連接
'tutorial' => [ //'adapter' => 'mysql', 'host' => '127.0.0.1', 'port' => '3306', 'username' => 'root', 'password' => '', 'dbname' => 'tutorial' ], 'invo' => [ //'adapter' => 'mysql', 'host' => '127.0.0.1', 'port' => '3306', 'username' => 'root', 'password' => '', 'dbname' => 'invo' ],
因為在我們所用數據庫一般都是mysql,所以這里adapter可以省略不寫,直接在use的時候指定到mysql,如下:
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
這樣在注冊的時候可以直接
$di->set('tutorial', function () use ($config) {
return new DbAdapter($config->tutorial->toArray());
});
$di->set('invo', function () use ($config) {
return new DbAdapter($config->invo->toArray());
});
注冊兩個數據庫連接就可以了,在models中連接數據庫需要用到
public function initialize(){
$this->setConnectionService('invo');
}
方法來指定連接的是哪個數據庫;
Phalcon官方給的例子中注冊數據庫的時候代碼是這樣的:
$di->set('tutorial', function () use ($config) { return new DbAdapter(array( 'host' => $config->tutorial->host, 'username' => $config->tutorial->username, 'password' => $config->tutorial->password, 'dbname' => $config->tutorial->dbname )); }); $di->set('invo', function () use ($config) { return new DbAdapter(array( 'host' => $config->invo->host, 'username' => $config->invo->username, 'password' => $config->invo->password, 'dbname' => $config->invo->dbname )); });
這樣做效果和上面的方法一樣, 只是把拆分開了;
還有一種變體,是可以選擇不同數據庫類型的
$di->set('tutorial', function () use ($config) { $tutorial = $config->tutorial->toArray(); $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $tutorial['adapter']; unset($tutorial['adapter']); return new $dbClass($tutorial); }); $di->set('invo', function () use ($config) { $invo = $config->invo->toArray(); $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $invo['adapter']; unset($invo['adapter']); return new $dbClass($invo); });
這個方法需要在config.php中設置adapter設置數據庫類型,對於需要連接不同數據庫需求來說可以用;