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:passwd@localhost/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