Caution: You are browsing the legacy symfony 1.x part of this website.
Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages showcasing Symfony with Docker, APIs, queues & async tasks, Webpack, SPAs, etc.

databases.yml設定ファイル

1.2
Symfony version
1.4
Language

databases.ymlはデータベース接続のコンフィギュレーションを可能にします。 これはsymfonyに搭載されているORMであるPropelとDoctrineの両方で使われます。

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

note

たいていの場合、プロジェクトのすべてのアプリケーションは同じデータベースをを共有します。 そのことがメインデータベース設定ファイルがプロジェクトの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

note

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

tip

データベースの設定はdatabase:configureタスクを使うことでも設定できます。 このタスクは渡される引数に従ってdatabases.ymlを更新します。

Propel

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

dev:
  propel:
    param:
      classname:  DebugPDO
 
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オプションのセット -

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 ネイティブのenumを使うか false
validate データバリデーションを有効にするかどうか true
idxname_format インデックス名のフォーマット %s_idx
seqname_format シーケンス名のフォーマット %s_seq
tblname_format テーブル名のフォーマット %s