DoctrineBundle is the library that integrates the Doctrine DBAL and ORM libraries into Symfony applications. DoctrineBundle 1.11.0 has just been released and includes several new features and improvements. These are the most important ones.

Symfony Cache Pool Support

Using Symfony Cache pools for caching Doctrine's queries, metadata and results is now easier thanks to the new pool option. This allows using a Symfony Cache pool directly without having to create extra services:

  • YAML
  • XML
1
2
3
4
5
6
7
8
9
10
11
12
13
# config/packages/doctrine.yaml
doctrine:
    orm:
        auto_generate_proxy_classes: false
        metadata_cache_driver:
            type: pool
            pool: doctrine.system_cache_pool
        query_cache_driver:
            type: pool
            pool: doctrine.system_cache_pool
        result_cache_driver:
            type: pool
            pool: doctrine.result_cache_pool

Using the new pool setting is optional, as is the dependency on symfony/cache. However, in the future, declaring caches through DoctrineCacheBundle will be deprecated, leaving only the id and pool cache types. Support for DoctrineCacheBundle will be dropped in DoctrineBundle 2.0.

Store Backtraces When Profiling Queries

The new profiling_collect_backtrace configuration option enables backtrace collection when logging a query. This helps you find the exact source of failing or problematic queries:

DoctrineBundle Query Backtrace

Because of the large amount of data this can produce, this option is disabled by default and you will need to enable it explicitly.

New Messenger Middleware Services

If you are using the Messenger component, there are new middleware services you can use to avoid connection issues to your database:

  • The doctrine_ping_connection middleware will attempt to ping the connection and will reconnect to the database if this ping wasn't successful. It will also reset the entity manager should it have been closed in the meantime.
  • The doctrine_close_connection middleware will close the connection after handling a message.
Published in #Living on the edge