The databases.yml Configuration File

The ~databases.yml~ configuration allows for the configuration of the database connection. It is used by both ORMs bundled with symfony: Propel and Doctrine.

The main databases.yml configuration file for a project can be found in the config/ directory.

Most of the time, all applications of a project share the same database. That's why the main database configuration file is in the project config/ directory. You can of course override the default configuration by defining a databases.yml configuration file in your application configuration directories.

As discussed in the introduction, the databases.yml file is environment-aware, benefits from the configuration cascade mechanism, and can include constants.

Each connection described in databases.yml must include a name, a database handler class name, and a set of parameters (param) used to configure the database object:

---
CONNECTION_NAME:
  class: CLASS_NAME
  param: { ARRAY OF PARAMETERS }

The class name should extend the sfDatabase base class.

If the database handler class cannot be autoloaded, a file path can be defined and will be automatically included before the factory is created:

---
CONNECTION_NAME:
  class: CLASS_NAME
  file:  ABSOLUTE_PATH_TO_FILE

The databases.yml configuration file is cached as a PHP file; the process is automatically managed by the ~sfDatabaseConfigHandler~ class.

The database configuration can also be configured by using the database:configure task. This task updates the databases.yml according to the arguments you pass to it.

Propel

Default Configuration:

d

The following parameters can be customized under the param section:

Key Description Default Value
classname The Propel adapter class PropelPDO
dsn The PDO DSN (required) -
username The database username -
password The database password -
pooling Whether to enable pooling true
encoding The default charset UTF8
persistent Whether to create persistent connections false
options A set of Propel options -
debug Options for the DebugPDO class n/a

The debug entry defines all the options described in the Propel documentation. The following YAML shows all the available options:

---
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

Default Configuration:

---
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

The following parameters can be customized under the param section:

Key Description Default Value
dsn The PDO DSN (required) -
username The database username -
password The database password -
encoding The default charset UTF8
attributes A set of Doctrine attributes -

The following attributes can be customized under the attributes section:

Key Description Default Value
quote_identifier Whether to wrap identifiers with quotes false
use_native_enum Whether to use native enums false
validate Whether to enable data validation false
idxname_format Format for index names %s_idx
seqname_format Format for sequence names %s_seq
tblname_format Format for table names %s