databases.yml 設定ファイル

~databases.yml~ では、データベースコネクション (接続) のコンフィギュレーションを変更できます。この設定ファイルは symfony に搭載されている ORM である Propel と Doctrine の両方で使われます。

プロジェクトのメイン設定ファイルである databases.ymlconfig/ ディレクトリで見つかります。

ほとんどの場合、プロジェクトのすべてのアプリケーションは同じデータベースを共有します。このことがデータベースのメイン設定ファイルがプロジェクトの config/ ディレクトリに存在する理由です。もちろんアプリケーションの config ディレクトリのなかで databases.yml 設定ファイルを定義することで、デフォルトコンフィギュレーションをオーバーライドできます。

設定ファイルの原則の章で説明したように、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

databases.yml 設定ファイルは PHP ファイルとしてキャッシュされます。処理は ~sfDatabaseConfigHandler~ クラスによって自動管理されます。

データベースのコンフィギュレーションを変更する作業は database:configure タスクでも行うことができます。このタスクは引数に渡された値にしたがって databases.yml を更新します。

Propel

デフォルトコンフィギュレーション:

d

次のパラメータは 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:
    memdelta:
      enabled: true
    mempeak:
      enabled: true
    method:
      enabled: true
    mem:
      enabled: true
    querycount:
      enabled: true

Doctrine

デフォルトコンフィギュレーション:

---
all:
  doctrine:
    class:        sfDoctrineDatabase
    param:
      dsn:        mysql
      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