Doctrine DBAL
Doctrine DBALはDoctrineが提供しているデータベースの抽象化レイヤーです。
composerでRay.DbalModule
をインストールします。
composer require ray/dbal-module
アプリケーションモジュールでDbalModule
をインストールします。
use Ray\DbalModule\DbalModule;
use BEAR\Package\AbstractAppModule;
class AppModule extends AbstractAppModule
{
protected function configure()
{
// ...
$this->install(new DbalModule('driver=pdo_sqlite&memory=true'));
}
}
これでDIの設定が整いました。DbalInject
トレイトを利用すると$this->db
にDBオブジェクトがインジェクトされます。
use Ray\DbalModule\DbalInject;
class Index
{
use DbalInject;
public function onGet()
{
return $this->db; // \Doctrine\DBAL\Driver\Connection
}
}
複数DB
複数のデータベースの接続には二番目の引数に識別子を指定します。
$this->install(new DbalModule($logDsn, 'log_db'));
$this->install(new DbalModule($jobDsn, 'job_db'));
/**
* @Inject
* @Named("log_db")
*/
public function setLogDb(Connection $logDb)
MasterSlaveConnectionというリプリケーションのためのマスター/スレーブ接続が標準で用意されています。