databases.yml 設定ファイル
データベースコネクション (接続) のコンフィギュレーションは ~databases.yml~ ファイルのなかで変更できます。この設定ファイルは symfony に搭載されている ORM の Propel と Doctrine の両方で使われます。
プロジェクトのメイン設定ファイルである databases.yml ファイルは config/ ディレクトリに配置されています。
NOTE たいていのプロジェクトにおいて、すべてのアプリケーションは同じデータベースを共有しています。このことがデータベースのメイン設定ファイルがプロジェクトの
config/ディレクトリに配置されている理由です。もちろん、databases.ymlファイルをアプリケーションのconfig/ディレクトリに配置すれば、デフォルトコンフィギュレーションをオーバーライドできます。
設定ファイルの原則の章で述べたように、databases.yml ファイルでは、環境が認識され、コンフィギュレーションカスケードのメカニズムがはたらいており、定数を定義することができます。
databases.yml ファイルのなかのそれぞれのコネクションにおいて、データベースオブジェクトの初期化に使われる名前、データベースハンドラクラスの名前、パラメータ (param) をセットしなければなりません。
[yml]
CONNECTION_NAME:
class: CLASS_NAME
param: { ARRAY OF PARAMETERS }
class クラスは sfDatabase 基底クラスを継承しなければなりません。
データベースハンドラクラスがオートロードされていなければ、ファクトリが作られる前に file パスが定義され、自動的にインクルードされます。
[yml]
CONNECTION_NAME:
class: CLASS_NAME
file: ABSOLUTE_PATH_TO_FILE
NOTE
databases.ymlファイルのキャッシュは PHP ファイルとして保存されます。処理は ~sfDatabaseConfigHandler~ クラスにゆだねられます。
-
TIP データベースコンフィギュレーションの変更は
database:configureタスクでも実行することができます。このタスクは引数に渡された値に応じてdatabases.ymlファイルを更新します。
Propel
デフォルトコンフィギュレーション:
[yml]
dev:
propel:
param:
classname: DebugPDO
debug:
realmemoryusage: true
details:
time: { enabled: true }
slow: { enabled: true, threshold: 0.1 }
mem: { enabled: true }
mempeak: { enabled: true }
memdelta: { enabled: true }
test:
propel:
param:
classname: DebugPDO
all:
propel:
class: sfPropelDatabase
param:
classname: PropelPDO
dsn: mysql:dbname=##PROJECT_NAME##;host=localhost
username: root
password:
encoding: utf8
persistent: true
pooling: true
次のパラメータは param セクションのなかでカスタマイズできます。
| キー | 説明 | デフォルト |
| ------------ | ----------------------------| -------------- |
| classname | Propel のアダプタクラス | PropelPDO |
| dsn | PDO の DSN (必須) | - |
| username | データベースのユーザー名 | - |
| password | データベースのパスワード | - |
| pooling | プーリングを有効にするか | true |
| encoding | デフォルトのエンコーディング | utf8 |
| persistent | 永続的なコネクションを作成するか | false |
| options | Propel オプションのセット | - |
| debug | DebugPDO クラスのオプション| n/a |
debug エントリでは Propel のドキュメントに記載されているすべてのオプションを定義できます。次の YAML コードは利用可能なオプションを示しています。
[yml]
debug:
realmemoryusage: true
details:
time:
enabled: true
slow:
enabled: true
threshold: 0.001
memdelta:
enabled: true
mempeak:
enabled: true
method:
enabled: true
mem:
enabled: true
querycount:
enabled: true
Doctrine
デフォルトコンフィギュレーション:
[yml]
all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: mysql:dbname=##PROJECT_NAME##;host=localhost
username: root
password:
attributes:
quote_identifier: false
use_native_enum: false
validate: all
idxname_format: %s_idx
seqname_format: %s_seq
tblname_format: %s
次のパラメータは param セクションのなかでカスタマイズできます。
| キー | 説明 | デフォルト |
| ------------ | --------------------------- | ------------ |
| dsn | PDO の DSN (必須) | - |
| username | データベースのユーザー名 | - |
| password | データベースのパスワード | - |
| encoding | デフォルトのエンコーディング | utf8 |
| attributes | Doctrine 属性のセット | - |
次の属性は attributes セクションのなかでカスタマイズできます。
| キー | 説明 | デフォルト |
| ------------------ | -------------------------------------- | ------------ |
| quote_identifier | 識別子をクォートで囲むか | false |
| use_native_enum | ネイティブの列挙型を使うか | false |
| validate | データバリデーションを有効にするかどうか | true |
| idxname_format | インデックス名のフォーマット | %s_idx |
| seqname_format | シーケンス名のフォーマット | %s_seq |
| tblname_format | テーブル名のフォーマット | %s |
TIP 訳注:
attributesセクションのなかで文字集合と照合順序 (default_table_charsetとdefault_table_collate) および MySQL を利用している場合はストレージエンジンのデフォルトもカスタマイズできます (default_table_type)。