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.
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:
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
<!-- config/packages/doctrine.xml --> <?xml version="1.0" encoding="UTF-8" ?> <container xmlns="https://symfony.com/schema/dic/services" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:doctrine="https://symfony.com/schema/dic/doctrine" xsi:schemaLocation="https://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd https://symfony.com/schema/dic/doctrine https://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"> <doctrine:config> <doctrine:orm> <doctrine:entity-manager> <doctrine:query-cache-driver type="pool" pool="doctrine.system_cache_pool" /> <doctrine:metadata-cache-driver type="pool" pool="doctrine.system_cache_pool" /> <doctrine:result-cache-driver type="pool" pool="doctrine.result_cache_pool" /> </doctrine:entity-manager> </doctrine:orm> </doctrine:config> </container>
Using the new pool setting is optional, as is the dependency on
However, in the future, declaring caches through DoctrineCacheBundle will be
deprecated, leaving only the
pool cache types. Support for
DoctrineCacheBundle will be dropped in DoctrineBundle 2.0.
profiling_collect_backtrace configuration option enables backtrace
collection when logging a query. This helps you find the exact source of failing
or problematic queries:
Because of the large amount of data this can produce, this option is disabled by default and you will need to enable it explicitly.
If you are using the Messenger component, there are new middleware services you can use to avoid connection issues to your database:
doctrine_ping_connectionmiddleware 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.
doctrine_close_connectionmiddleware will close the connection after handling a message.
What a Symfony developer should know about the framework: News, Jobs, Tweets, Events, Videos,...