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 persistentesLas 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:
mysqlmssqlpgsqlsqliteoracle 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:passwd@localhost/blogSi 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.dbCapítulo original en inglés Chapter 8 - Inside The Model Layer Traducido por Miguel Sánchez