doctrine:
dbal:
default_connection: default
types:
# Una colección de tipos personalizados
# Ejemplo
un_tipo_personalizado:
class: Acme\HelloBundle\MiTipoPersonalizado
commented: true
connections:
default:
dbname: database
# Una colección de diferentes nombres de conexión (p. ej. default, conn2, etc.)
default:
dbname: ~
host: localhost
port: ~
user: root
password: ~
charset: ~
path: ~
memory: ~
# El conector usado por MySQL
unix_socket: ~
# true para que el controlador ibm_db2 la utilice como conexión persistente
persistent: ~
# El protocolo que utilizará el controlador ibm_db2 (predefinido a TCPIP si se omite)
protocol: ~
# true para usar dbname como nombre de servicio en vez del SID para Oracle
service: ~
# El modo de sesión que usará el controlador oci8
sessionMode: ~
# True para usar un servidor agrupado con el controlador oci8
pooled: ~
# Configurando MultipleActiveResultSets para el controlador pdo_sqlsrv
MultipleActiveResultSets: ~
driver: pdo_mysql
platform_service: ~
logging: %kernel.debug%
profiling: %kernel.debug%
driver_class: ~
wrapper_class: ~
options:
# Un arreglo de opciones
key: []
mapping_types:
# un arreglo de tipos asignados
name: []
slaves:
# una colección de nombres de conexión esclavas (p. ej. slave1, slave2)
slave1:
dbname: ~
host: localhost
port: ~
user: root
password: ~
charset: ~
path: ~
memory: ~
# El conector usado por MySQL
unix_socket: ~
# True para usarla como conexión persistente para el controlador ibm_db2
persistent: ~
# El protocolo que utilizará el controlador ibm_db2 (predefinido a TCPIP si se omite)
protocol: ~
# True para usar dbname como un nombre de servicio en vez de SID para Oracle
service: ~
# El modo de sesión que usará el controlador oci8
sessionMode: ~
# True para usar un servidor agrupado con el controlador oci8
pooled: ~
# Configurando MultipleActiveResultSets para el controlador pdo_sqlsrv
MultipleActiveResultSets: ~
orm:
default_entity_manager: ~
auto_generate_proxy_classes: false
proxy_dir: %kernel.cache_dir%/doctrine/orm/Proxies
proxy_namespace: Proxies
# busca la clase "ResolveTargetEntityListener" para una receta sobre este
resolve_target_entities: []
entity_managers:
# Una colección de diferentes nombres de gestores de entidad (p. ej. un_em, otro_em)
some_em:
query_cache_driver:
type: array # Requerido
host: ~
port: ~
instance_class: ~
class: ~
metadata_cache_driver:
type: array # Requerido
host: ~
port: ~
instance_class: ~
class: ~
result_cache_driver:
type: array # Requerido
host: ~
port: ~
instance_class: ~
class: ~
connection: ~
class_metadata_factory_name: Doctrine\ORM\Mapping\ClassMetadataFactory
default_repository_class: Doctrine\ORM\EntityRepository
auto_mapping: false
hydrators:
# Un arreglo de nombres de hidratantes
hydrator_name: []
mappings:
# Un arreglo de asignaciones, que puede ser un nombre de paquete o algo más
mapping_name:
mapping: true
type: ~
dir: ~
alias: ~
prefix: ~
is_bundle: ~
dql:
# Una colección de funciones de cadena
string_functions:
# ejemplo
# test_string: Acme\HelloBundle\DQL\StringFunction
# Una colección de funciones numéricas
numeric_functions:
# ejemplo
# test_numeric: Acme\HelloBundle\DQL\NumericFunction
# Una colección de funciones datetime
datetime_functions:
# ejemplo
# test_datetime: Acme\HelloBundle\DQL\DatetimeFunction
# Filtros SQL registrados en el gestor de la entidad
filters:
# Un arreglo de filtros
un_filtro:
class: ~ # Requerido
enabled: false
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doctrine="http://symfony.com/schema/dic/doctrine"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
<doctrine:config>
<doctrine:dbal default-connection="default">
<doctrine:connection
name="default"
dbname="database"
host="localhost"
port="1234"
user="user"
password="secret"
driver="pdo_mysql"
driver-class="MyNamespace\MyDriverImpl"
path="%kernel.data_dir%/data.sqlite"
memory="true"
unix-socket="/tmp/mysql.sock"
wrapper-class="MyDoctrineDbalConnectionWrapper"
charset="UTF8"
logging="%kernel.debug%"
platform-service="MyOwnDatabasePlatformService"
>
<doctrine:option key="foo">bar</doctrine:option>
<doctrine:mapping-type name="enum">string</doctrine:mapping-type>
</doctrine:connection>
<doctrine:connection name="conn1" />
<doctrine:type name="custom">Acme\HelloBundle\MyCustomType</doctrine:type>
</doctrine:dbal>
<doctrine:orm default-entity-manager="default" auto-generate-proxy-classes="false" proxy-namespace="Proxies" proxy-dir="%kernel.cache_dir%/doctrine/orm/Proxies">
<doctrine:entity-manager name="default" query-cache-driver="array" result-cache-driver="array" connection="conn1" class-metadata-factory-name="Doctrine\ORM\Mapping\ClassMetadataFactory">
<doctrine:metadata-cache-driver type="memcache" host="localhost" port="11211" instance-class="Memcache" class="Doctrine\Common\Cache\MemcacheCache" />
<doctrine:mapping name="AcmeHelloBundle" />
<doctrine:dql>
<doctrine:string-function name="test_string>Acme\HelloBundle\DQL\StringFunction</doctrine:string-function>
<doctrine:numeric-function name="test_numeric>Acme\HelloBundle\DQL\NumericFunction</doctrine:numeric-function>
<doctrine:datetime-function name="test_datetime>Acme\HelloBundle\DQL\DatetimeFunction</doctrine:datetime-function>
</doctrine:dql>
</doctrine:entity-manager>
<doctrine:entity-manager name="em2" connection="conn2" metadata-cache-driver="apc">
<doctrine:mapping
name="DoctrineExtensions"
type="xml"
dir="%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/DoctrineExtensions/Entity"
prefix="DoctrineExtensions\Entity"
alias="DExt"
/>
</doctrine:entity-manager>
</doctrine:orm>
</doctrine:config>
</container>
El siguiente ejemplo de configuración muestra todos los valores de configuración predeterminados que resuelve ORM:
doctrine:
orm:
auto_mapping: true
# la distribución estándar lo sustituye a true en depuración,
# false en cualquier otro caso
auto_generate_proxy_classes: false
proxy_namespace: Proxies
proxy_dir: "%kernel.cache_dir%/doctrine/orm/Proxies"
default_entity_manager: default
metadata_cache_driver: array
query_cache_driver: array
result_cache_driver: array
Hay un montón de opciones de configuración que puedes utilizar para redefinir ciertas clases, pero solamente son para casos de uso muy avanzado.
Para los controladores de caché puedes especificar los valores «array», «apc», «memcache», «memchached», «xcache» o «service».
El siguiente ejemplo muestra una descripción de los ajustes de la memoria caché:
doctrine:
orm:
auto_mapping: true
metadata_cache_driver: apc
query_cache_driver:
type: service
id: my_doctrine_common_cache_service
result_cache_driver:
type: memcache
host: localhost
port: 11211
instance_class: Memcache
La definición explícita de todas las entidades asignadas es la única configuración necesaria para el ORM y hay varias opciones de configuración que puedes ajustar. Existen las siguientes opciones de configuración para una asignación:
DoctrineBundle apoya todos los parámetros que los controladores de Doctrine aceptan por omisión, convertidos a la nomenclatura estándar de XML o YAML que Symfony respeta. Consulta la documentación oficial de DBAL de Doctrine para más información. El siguiente bloque muestra todas las posibles claves de configuración:
doctrine:
dbal:
dbname: database
host: localhost
port: 1234
user: user
password: secret
driver: pdo_mysql
# the DBAL driverClass option
driver_class: MyNamespace\MyDriverImpl
# the DBAL driverOptions option
options:
foo: bar
path: "%kernel.data_dir%/data.sqlite"
memory: true
unix_socket: /tmp/mysql.sock
# the DBAL wrapperClass option
wrapper_class: MyDoctrineDbalConnectionWrapper
charset: UTF8
logging: "%kernel.debug%"
platform_service: MyOwnDatabasePlatformService
mapping_types:
enum: string
types:
custom: Acme\HelloBundle\MyCustomType
# the DBAL keepSlave option
keep_slave: false
<!-- xmlns:doctrine="http://symfony.com/schema/dic/doctrine" -->
<!-- xsi:schemaLocation="http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"> -->
<doctrine:config>
<doctrine:dbal
name="default"
dbname="database"
host="localhost"
port="1234"
user="user"
password="secret"
driver="pdo_mysql"
driver-class="MyNamespace\MyDriverImpl"
path="%kernel.data_dir%/data.sqlite"
memory="true"
unix-socket="/tmp/mysql.sock"
wrapper-class="MyDoctrineDbalConnectionWrapper"
charset="UTF8"
logging="%kernel.debug%"
platform-service="MyOwnDatabasePlatformService"
>
<doctrine:option key="foo">bar</doctrine:option>
<doctrine:mapping-type name="enum">string</doctrine:mapping-type>
<doctrine:type name="custom">Acme\HelloBundle\MyCustomType</doctrine:type>
</doctrine:dbal>
</doctrine:config>
Si deseas configurar varias conexiones en YAML, ponlas bajo la clave connections y dales un nombre único:
doctrine:
dbal:
default_connection: default
connections:
default:
dbname: Symfony2
user: root
password: null
host: localhost
customer:
dbname: customer
user: root
password: null
host: localhost
El servicio database_connection siempre se refiere a la conexión default, misma que es la primera definida o la configurada a través del parámetro default_connection.
Cada conexión también es accesible a través del servicio doctrine.dbal.[nombre]_connection donde [nombre] es el nombre de la conexión.