doctrine: dbal: default_connection: default connections: # ORM uses `default`; AuditLogWriter uses `audit` (same DSN, separate # service) to write outside the ORM transaction so audit rows survive # an application-side rollback and avoid transactional entanglement. default: url: '%env(resolve:DATABASE_URL)%' profiling_collect_backtrace: '%kernel.debug%' # audit_log has no ORM entity (written via raw DBAL). Exclude it # from schema comparison so migrations:diff / schema:validate stay # clean. Creation/teardown stay driven by migrations. schema_filter: '~^(?!audit_log$).+~' audit: url: '%env(resolve:DATABASE_URL)%' orm: validate_xml_mapping: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware identity_generation_preferences: Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity auto_mapping: true resolve_target_entities: App\Shared\Domain\Contract\UserInterface: App\Module\Core\Domain\Entity\User mappings: App: type: attribute is_bundle: false dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App Core: type: attribute is_bundle: false dir: '%kernel.project_dir%/src/Module/Core/Domain/Entity' prefix: 'App\Module\Core\Domain\Entity' controller_resolver: auto_mapping: false when@test: doctrine: dbal: # Propagate the _test suffix to BOTH connections: the audit # connection must write to the test DB, not the dev DB. connections: default: dbname_suffix: '_test%env(default::TEST_TOKEN)%' audit: dbname_suffix: '_test%env(default::TEST_TOKEN)%' when@prod: doctrine: orm: query_cache_driver: type: pool pool: doctrine.system_cache_pool result_cache_driver: type: pool pool: doctrine.result_cache_pool framework: cache: pools: doctrine.result_cache_pool: adapter: cache.app doctrine.system_cache_pool: adapter: cache.system