Caution: You are browsing the legacy 1.x part of this website.
This version of symfony is not maintained anymore. If some of your projects still use this version, consider upgrading.

Master Symfony fundamentals

Be trained by SensioLabs experts (2 to 6 day sessions -- French or English).
training.sensiolabs.com

Discover SensioLabs' Professional Business Solutions

Peruse our complete Symfony & PHP solutions catalog for your web development needs.
sensiolabs.com
The Reference Book

データベースコネクション (接続) のコンフィギュレーションは 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_charsetdefault_table_collate) および MySQL を利用している場合はストレージエンジンのデフォルトもカスタマイズできます (default_table_type)。


In the news

The Symfony Certification by SensioLabs

Symfony 3 Certification now available in 4,000 centers around the world!

Get certified

Upcoming training sessions