Symfony2Book04:Doctrine02-数据库抽象层(DBAL)

  • 原文出处: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 的内容。

首先,配置数据库连接参数:

  
  
  
  
  1. # app/config/config.yml 
  2. doctrine: 
  3.     dbal: 
  4.         driver:   pdo_mysql 
  5.         dbname:   Symfony2 
  6.         user:     root 
  7.         passwordnull 

DoctrineBundle支持缺省Doctrine驱动所接受的全部参数,Symfony2可以强制转换为XML或YAML的命名标准。更多细节请参见Doctrine DBAL 文档。

你可以通过database_connection服务来访问Doctrine DBAL连接。

  
  
  
  
  1. class UserController extends Controller 
  2.     public function indexAction() 
  3.     { 
  4.         $conn = $this->get('database_connection'); 
  5.         $users = $conn->fetchAll('SELECT * FROM users'); 
  6.  
  7.         // ... 
  8.     } 

配置

除了缺省的Doctrine选项外,你还可以配置一些Symfony相关的选项。下面显示所有可能的配置关键词:

  
  
  
  
  1. doctrine: 
  2.     dbal: 
  3.         dbname:               database 
  4.         host:                 localhost 
  5.         port:                 1234 
  6.         user:                 user 
  7.         password:             secret 
  8.         driver:               pdo_mysql 
  9.         driver_class:         MyNamespace\MyDriverImpl 
  10.         options: 
  11.             foo: bar 
  12.         path:                 %kernel.data_dir%/data.sqlite 
  13.         memory:               true 
  14.         unix_socket:          /tmp/mysql.sock 
  15.         wrapper_class:        MyDoctrineDbalConnectionWrapper 
  16.         charset:              UTF8 
  17.         logging:              %kernel.debug% 
  18.         platform_service:     MyOwnDatabasePlatformService 

如果你想在YAML中配置多个连接,请将它们放置在connections关键词下并赋予它们唯一的名字:

  
  
  
  
  1. doctrine:  
  2.     dbal:  
  3.         default_connection:       default  
  4.         connections:  
  5.             default:  
  6.                 dbname:           Symfony2  
  7.                 user:             root  
  8.                 password:         null  
  9.                 host:             localhost  
  10.             customer:  
  11.                 dbname:           customer  
  12.                 user:             root  
  13.                 password:         null  
  14.                 host:             localhost  

database_connection服务总是指向缺省连接的,该连接被第一个定义或使用default_connection参数的那个配置。

每个连接也可以通过doctrine.dbal.[name]_connection服务来访问,其中[name]是连接名。

注册自定义映射类型

你可以通过配置注册自定义的映射类型,它们将被添加到所有的配置连接中。

  
  
  
  
  1. # app/config/config.yml 
  2. doctrine: 
  3.     dbal: 
  4.         types: 
  5.             custom_first: Acme\HelloBundle\Type\CustomFirst 
  6.             custom_second: Acme\HelloBundle\Type\CustomSecond

你可能感兴趣的:(symfony2,数据库抽象层,Doctrine,DBAL,Symfony2Book)