Ver índice de contenidos del libro

8.5. Conexiones con la base de datos

Aunque el modelo de datos es independiente de la base de datos utilizada, es necesario utilizar una base de datos concreta. La información mínima que necesita Symfony para realizar peticiones a la base de datos es su nombre, los datos de acceso y el tipo de base de datos. Esta información se indica en el archivo databases.yml que se encuentra en el directorio config/. El listado 8-17 muestra un ejemplo de ese archivo.

Listado 8-17 - Ejemplo de opciones de conexión con la base de datos, en miproyecto/config/databases.yml

prod:
  propel:
    param:
      hostspec:           miservidordatos
      username:           minombreusuario
      password:           xxxxxxxxxx

all:
  propel:
    class:                sfPropelDatabase
    param:
      phptype:            mysql     # fabricante de la base de datos
      hostspec:           localhost
      database:           blog
      username:           login
      password:           passwd
      port:               80
      encoding:           utf8      # Codificación utilizada para crear la tabla
      persistent:         true      # Utilizar conexiones persistentes

Las opciones de la conexión se establecen para cada entorno. Se pueden definir diferentes opciones para los entornos prod, dev y test, o para cualquier otro entorno definido en la aplicación. También es posible redefinir esta configuración en cada aplicación, estableciendo diferentes valores para las opciones en un archivo específico de la aplicación, como por ejemplo apps/miaplicacion/config/databases.yml. De esta forma es posible por ejemplo disponer de políticas de seguridad diferentes para las aplicaciones públicas y las aplicaciones de administración del proyecto, y definir distintos usuarios de bases de datos con privilegios diferentes.

Cada entorno puede definir varias conexiones. Cada conexión hace referencia a un esquema con el mismo nombre. En el ejemplo del listado 8-17, la conexión propel se refiere al esquema propel del listado 8-3.

Los valores permitidos para el parámetro phptype corresponden a los tipos de bases de datos soportados por Creole:

  • mysql
  • mssql
  • pgsql
  • sqlite
  • oracle

Los parámetros hostspec, database, username y password son las opciones típicas para conectar con una base de datos. Estas opciones se pueden escribir de forma abreviada mediante un nombre de origen de datos o DSN data source name). El listado 8-18 es equivalente a la sección all: del listado 8-17.

Listado 8-18 - Opciones abreviadas de conexión con la base de datos

all:
  propel:
    class:          sfPropelDatabase
    param:
      dsn:          mysql://login:[email protected]/blog

Si se utiliza una base de datos de tipo SQLite, el parámetro hostspec debe indicar la ruta al archivo de base de datos. Si por ejemplo se guarda la base de datos del blog en el archivo data/blog.db, las opciones del archivo databases.yml serán las del listado 8-19.

Listado 8-19 - Opciones de conexión con una base de datos SQLite utilizando la ruta al archivo como host

all:
  propel:
    class:          sfPropelDatabase
  param:
    phptype:  sqlite
    database: %SF_DATA_DIR%/blog.db