データベースコネクション (接続) のコンフィギュレーションは databases.yml ファイルのなかで変更できます。この設定ファイルは symfony に搭載されている ORM の Propel と Doctrine の両方で使われます。
プロジェクトのメイン設定ファイルである databases.yml ファイルは config/ ディレクトリに配置されています。
note
たいていのプロジェクトにおいて、すべてのアプリケーションは同じデータベースを共有しています。このことがデータベースのメイン設定ファイルがプロジェクトの config/ ディレクトリに配置されている理由です。もちろん、databases.yml ファイルをアプリケーションの config/ ディレクトリに配置すれば、デフォルトコンフィギュレーションをオーバーライドできます。
設定ファイルの原則の章で述べたように、databases.yml ファイルでは、環境が認識され、コンフィギュレーションカスケードのメカニズムがはたらいており、定数を定義することができます。
databases.yml ファイルのなかのそれぞれのコネクションにおいて、データベースオブジェクトの初期化に使われる名前、データベースハンドラクラスの名前、パラメータ (param) をセットしなければなりません。
CONNECTION_NAME:
class: CLASS_NAME
param: { ARRAY OF PARAMETERS }
class クラスは sfDatabase 基底クラスを継承しなければなりません。
データベースハンドラクラスがオートロードされていなければ、ファクトリが作られる前に file パスが定義され、自動的にインクルードされます。
CONNECTION_NAME: class: CLASS_NAME file: ABSOLUTE_PATH_TO_FILE
note
databases.yml ファイルのキャッシュは PHP ファイルとして保存されます。処理は sfDatabaseConfigHandler クラスにゆだねられます。
tip
データベースコンフィギュレーションの変更は database:configure タスクでも実行することができます。このタスクは引数に渡された値に応じて databases.yml ファイルを更新します。
Propel
デフォルトコンフィギュレーション:
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 コードは利用可能なオプションを示しています。
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
デフォルトコンフィギュレーション:
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)。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.