Silexを試してみた(6) - Doctrine DBAL
Doctrine DBALを使ったDBへのアクセスについて。
Doctrine DBALのインストール
slim版にMonologは含まれていないので、composerを使ってインストールする。
composer.jsonを
{
"require": {
"silex/silex": "~1.1",
"twig/twig": ">=1.8,<2.0-dev",
"symfony/twig-bridge": "~2.3",
"monolog/monolog": ">=1.0.0",
"doctrine/dbal": "2.2.*"
}
}
のように編集して、composer.pharを実行する。
$ ./composer.phar update
Service Providerの登録
Silex\Application
のregister
メソッドで登録する。今回はsqlite3を使用した。
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_sqlite',
'path' => __DIR__.'/../var/data/app.db',
),
));
driver
は使用するDBのドライバ。
path
はsqlite3用の設定でdbファイルを指定する。
db.options
はDBALに設定するためのオプション。オプションの内容は対応するドライバによって異なるので
DBALのドキュメントを参考に設定する。
SQLの実行
$app['db']
にService Providerが登録されており、このインスタンスを使ってSQLを実行する。
$sql = 'SELECT * FROM user WHERE name = ? AND pass = ?';
$user = $app['db']->fetchAssoc($sql, array($name, $pass));
なお$app['db']
で参照するのは、Doctrine\DBAL\Connection
のインスタンス。
参考
- DoctrineServiceProvider - Documentation - Silex - The PHP micro-framework based on Symfony2 Components
- 3. Configuration — Doctrine DBAL 2.1.0 documentation
- 4. Data Retrieval And Manipulation — Doctrine DBAL 2.1.0 documentation