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:host=localhost;dbname=blog" root mi_password
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 configure:database --env=dev "mysql:host=localhost;dbname=blog_dev" rootmi_password
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 configure:database --app=frontend "mysql:host=localhost;dbname=blog" root mi_password
En cada entorno también es posible definir varias conexiones diferentes. El nombre de la conexión por defecto es doctrine
. La opción name
permite crear una nueva conexión:
$ php symfony configure:database --name=otra_conexion "mysql:host=localhost;dbname=example" root mi_password
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:
doctrine:
class: sfDoctrineDatabase
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:
doctrine:
param:
dsn: mysql:dbname=blog;host=localhost
username: login
password: passwd
attributes:
quote_identifier: false
use_native_enum: false
validate: all
idxname_format: %s_idx
seqname_format: %s_seq
tblname_format: %s
Si quieres redefinir esta configuración a nivel de aplicación, debes crear un archivo específico para esa aplicación, como por ejemplo apps/frontend/config/databases.yml
.
Si quieres utilizar una base de datos de tipo SQLite, el parámetro dsn
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:
doctrine:
class: sfDoctrineDatabase
param:
database: sqlite:///%SF_DATA_DIR%/blog.db