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, las credenciales para acceder (usuario, contraseña) y el tipo de base de datos. Las opciones de conexión se pueden configurar pasando un DSN data source name) a la tarea configure:database
:
> php symfony configure:database "mysql://login:password@localhost/blog"
Los datos de conexión dependen del entorno de ejecución. Se pueden definir diferentes opciones para los entornos prod
, dev
y test
y para cualquier otro entorno de la aplicación utilizando la opción env
:
> php symfony --env=prod configure:database "mysql://login:password@localhost/blog"
Cada aplicación también puede redefinir esta configuración, lo que es útil cuando se quiere disponer de diferentes políticas de seguridad para el frontal y para la parte de administración de la aplicación. De esta forma, es posible disponer de diferentes usuarios de base de datos con privilegios diferentes para cada aplicación:
> php symfony --app=frontend configure:database "mysql://login:password@localhost/blog"
En cada entorno también es posible definir varias conexiones diferentes. Cada conexión siempre hace referencia al esquema de datos del mismo nombre. El nombre de la conexión por defecto es propel
, que hace referencia al esquema de datos llamado propel
(por ejemplo el del listado 8-3). La opción name
permite crear una nueva conexión:
> php symfony --name=otraconexion configure:database "mysql://login:password@localhost/blog"
Las opciones de conexión con la base de datos también se pueden establecer manualmente en el archivo databases.yml
que se encuentra en el directorio config/
. El listado 8-17 muestra un ejemplo de ese archivo y el listado 8-18 muestra el mismo ejemplo con la notación extendida.
Listado 8-17 - Opciones abreviadas de conexión con la base de datos
all:
propel:
class: sfPropelDatabase
param:
dsn: mysql://login:password@localhost/blog
Listado 8-18 - Ejemplo de opciones de conexión con la base de datos, en miproyecto/config/databases.yml
prod:
propel:
param:
hostspec: mi_servidor_datos
usuarioname: mi_nombre_usuario
password: xxxxxxxxxx
all:
propel:
class: sfPropelDatabase
param:
phptype: mysql # fabricante de la base de datos
hostspec: localhost
database: blog
usuarioname: login
password: passwd
port: 80
encoding: utf8 # Codificación utilizada para crear la tabla
persistent: true # Utilizar conexiones persistentes
Los valores permitidos para el parámetro phptype
corresponden a los tipos de bases de datos soportados por PDO:
mysql
mssql
pgsql
sqlite
oracle
Los parámetros hostspec
, database
, usuarioname
y password
son las opciones típicas para conectar con una base de datos (servidor, base de datos, nombre de usuario y contraseña).
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