- 原文出处:http://symfony.com/doc/current/book/doctrine.html
- 原文作者:Symfony.com
- 授权许可:创作共用协议
- 翻译人员:FireHare <ubuntu.firehare AT gmail.com>
- 校对人员:FireHare
- 适用版本:Symfony 2
- 文章状态:已校对
Doctrine数据库抽象层(DBAL)是一个构建在PDO之上的抽象层,它为大多数流行的关系性数据库提供直接灵活的API。
你可以从官方文档中读到更多关于Doctrine DBAL 的内容。
首先,配置数据库连接参数:
- # app/config/config.yml
- doctrine:
- dbal:
- driver: pdo_mysql
- dbname: Symfony2
- user: root
- password: null
DoctrineBundle支持缺省Doctrine驱动所接受的全部参数,Symfony2可以强制转换为XML或YAML的命名标准。更多细节请参见Doctrine DBAL 文档。
你可以通过database_connection服务来访问Doctrine DBAL连接。
- class UserController extends Controller
- {
- public function indexAction()
- {
- $conn = $this->get('database_connection');
- $users = $conn->fetchAll('SELECT * FROM users');
- // ...
- }
- }
配置
除了缺省的Doctrine选项外,你还可以配置一些Symfony相关的选项。下面显示所有可能的配置关键词:
- doctrine:
- dbal:
- dbname: database
- host: localhost
- port: 1234
- user: user
- password: secret
- driver: pdo_mysql
- driver_class: MyNamespace\MyDriverImpl
- options:
- foo: bar
- path: %kernel.data_dir%/data.sqlite
- memory: true
- unix_socket: /tmp/mysql.sock
- wrapper_class: MyDoctrineDbalConnectionWrapper
- charset: UTF8
- logging: %kernel.debug%
- platform_service: MyOwnDatabasePlatformService
如果你想在YAML中配置多个连接,请将它们放置在connections关键词下并赋予它们唯一的名字:
- doctrine:
- dbal:
- default_connection: default
- connections:
- default:
- dbname: Symfony2
- user: root
- password: null
- host: localhost
- customer:
- dbname: customer
- user: root
- password: null
- host: localhost
database_connection服务总是指向缺省连接的,该连接被第一个定义或使用default_connection参数的那个配置。
每个连接也可以通过doctrine.dbal.[name]_connection服务来访问,其中[name]是连接名。
注册自定义映射类型
你可以通过配置注册自定义的映射类型,它们将被添加到所有的配置连接中。
- # app/config/config.yml
- doctrine:
- dbal:
- types:
- custom_first: Acme\HelloBundle\Type\CustomFirst
- custom_second: Acme\HelloBundle\Type\CustomSecond