DoctrineServiceProvider 提供了Doctrine DBAL的集成便于连接数据库。
使用composer添加库依赖:composer require “doctrine/dbal:~2.2”
1/参数
db.options:
driver:数据库驱动,默认为pdo_mysql.
dbname:数据库的名字
host:要连接的数据库的主机,默认为localhost
user:默认为root
password:数据库密码
charset:
path:
port:
使用过程:
#注册
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_mysql',
'path' => __DIR__.'/app.db',
'host' => '127.0.0.1',
'dbname' => 'user_manage_system',
'user' => 'root',
'password' => '222',
),
));
#使用
$app->get('/user', function() use ($app) {
$sql = 'SELECT * FROM users';
$post = $app['db']->fetchAll($sql);
var_dump($post);
return new Response('');
});
4/使用多个数据库
可以连接多个数据库,在注册时将db.options 改为dbs.options
#注册多个数据库
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'dbs.options' => array (
'mysql_read' => array(
'driver' => 'pdo_mysql',
'host' => 'mysql_read.someplace.tld',
'dbname' => 'my_database',
'user' => 'my_username',
'password' => 'my_password',
'charset' => 'utf8mb4',
),
'mysql_write' => array(
'driver' => 'pdo_mysql',
'host' => 'mysql_write.someplace.tld',
'dbname' => 'my_database',
'user' => 'my_username',
'password' => 'my_password',
'charset' => 'utf8mb4',
),
),
));
#使用
$app->get('/blog/{id}', function ($id) use ($app) {
$sql = "SELECT * FROM posts WHERE id = ?";
$post = $app['dbs']['mysql_read']->fetchAssoc($sql, array((int) $id));
$sql = "UPDATE posts SET value = ? WHERE id = ?";
$app['dbs']['mysql_write']->executeUpdate($sql, array('newValue', (int) $id));
return "<h1>{$post['title']}</h1>".
"<p>{$post['body']}</p>";
});