@@ -100,6 +100,36 @@ The following block shows all possible configuration keys:
|
100 | 100 | </doctrine:config>
|
101 | 101 | </container>
|
102 | 102 |
|
| 103 | + .. code-block:: php |
| 104 | +
|
| 105 | +use Symfony\Config\DoctrineConfig; |
| 106 | +
|
| 107 | +return static function (DoctrineConfig $doctrine): void { |
| 108 | +$dbal = $doctrine->dbal(); |
| 109 | +
|
| 110 | +$dbal = $dbal |
| 111 | +->connection('default') |
| 112 | +->dbname('database') |
| 113 | +->host('localhost') |
| 114 | +->port(1234) |
| 115 | +->user('user') |
| 116 | +->password('secret') |
| 117 | +->driver('pdo_mysql') |
| 118 | +->url('mysql://db_user:[email protected]:3306/db_name') // if the url option is specified, it will override the above config |
| 119 | +->driverClass(App\DBAL\MyDatabaseDriver::class) // the DBAL driverClass option |
| 120 | +->option('foo', 'bar') // the DBAL driverOptions option |
| 121 | +->path('%kernel.project_dir%/var/data/data.sqlite') |
| 122 | +->memory(true) |
| 123 | +->unixSocket('/tmp/mysql.sock') |
| 124 | +->wrapperClass(App\DBAL\MyConnectionWrapper::class) // the DBAL wrapperClass option |
| 125 | +->charset('utf8mb4') |
| 126 | +->logging('%kernel.debug%') |
| 127 | +->platformService(App\DBAL\MyDatabasePlatformService::class) |
| 128 | +->serverVersion('8.0.37') |
| 129 | +->mappingType('enum', 'string') |
| 130 | +->type('custom', App\DBAL\MyCustomType::class); |
| 131 | +}; |
| 132 | +
|
103 | 133 | .. note::
|
104 | 134 |
|
105 | 135 | The ``server_version`` option was added in Doctrine DBAL 2.5, which
|
@@ -125,7 +155,9 @@ The following block shows all possible configuration keys:
|
125 | 155 | If you want to configure multiple connections in YAML, put them under the
|
126 | 156 | ``connections`` key and give them a unique name:
|
127 | 157 |
|
128 |
| -.. code-block:: yaml |
| 158 | +.. configuration-block:: |
| 159 | + |
| 160 | +.. code-block:: yaml |
129 | 161 |
|
130 | 162 | doctrine:
|
131 | 163 | dbal:
|
@@ -144,6 +176,29 @@ If you want to configure multiple connections in YAML, put them under the
|
144 | 176 | host: localhost
|
145 | 177 | server_version: '8.2.0'
|
146 | 178 |
|
| 179 | +.. code-block:: php |
| 180 | +
|
| 181 | +use Symfony\Config\DoctrineConfig; |
| 182 | +
|
| 183 | +return static function (DoctrineConfig $doctrine): void { |
| 184 | +$dbal = $doctrine->dbal(); |
| 185 | +$dbal->defaultConnection('default'); |
| 186 | +
|
| 187 | +$dbal->connection('default') |
| 188 | +->dbname('Symfony') |
| 189 | +->user('root') |
| 190 | +->password('null') |
| 191 | +->host('localhost') |
| 192 | +->serverVersion('8.0.37'); |
| 193 | +
|
| 194 | +$dbal->connection('customer') |
| 195 | +->dbname('customer') |
| 196 | +->user('root') |
| 197 | +->password('null') |
| 198 | +->host('localhost') |
| 199 | +->serverVersion('8.2.0'); |
| 200 | +}; |
| 201 | +
|
147 | 202 | The ``database_connection`` service always refers to the *default* connection,
|
148 | 203 | which is the first one defined or the one configured via the
|
149 | 204 | ``default_connection`` parameter.
|
@@ -172,7 +227,9 @@ Doctrine ORM Configuration
|
172 | 227 | This following configuration example shows all the configuration defaults
|
173 | 228 | that the ORM resolves to:
|
174 | 229 |
|
175 |
| -.. code-block:: yaml |
| 230 | +.. configuration-block:: |
| 231 | + |
| 232 | +.. code-block:: yaml |
176 | 233 |
|
177 | 234 | doctrine:
|
178 | 235 | orm:
|
@@ -187,6 +244,29 @@ that the ORM resolves to:
|
187 | 244 | result_cache_driver: array
|
188 | 245 | naming_strategy: doctrine.orm.naming_strategy.default
|
189 | 246 |
|
| 247 | +.. code-block:: php |
| 248 | +
|
| 249 | +use Symfony\Config\DoctrineConfig; |
| 250 | +
|
| 251 | +return static function (DoctrineConfig $doctrine): void { |
| 252 | +$orm = $doctrine->orm(); |
| 253 | +
|
| 254 | +$orm |
| 255 | +->entityManager('default') |
| 256 | +->connection('default') |
| 257 | +->autoMapping(true) |
| 258 | +->metadataCacheDriver()->type('array') |
| 259 | +->queryCacheDriver()->type('array') |
| 260 | +->resultCacheDriver()->type('array') |
| 261 | +->namingStrategy('doctrine.orm.naming_strategy.default'); |
| 262 | +
|
| 263 | +$orm |
| 264 | +->autoGenerateProxyClasses(false) |
| 265 | +->proxyNamespace('Proxies') |
| 266 | +->proxyDir('%kernel.cache_dir%/doctrine/orm/Proxies') |
| 267 | +->defaultEntityManager('default'); |
| 268 | +}; |
| 269 | +
|
190 | 270 | There are lots of other configuration options that you can use to overwrite
|
191 | 271 | certain classes, but those are for very advanced use-cases only.
|
192 | 272 |
|
@@ -230,35 +310,70 @@ Caching Drivers
|
230 | 310 | Use any of the existing :doc:`Symfony Cache </cache>` pools or define new pools
|
231 | 311 | to cache each of Doctrine ORM elements (queries, results, etc.):
|
232 | 312 |
|
233 |
| -.. code-block:: yaml |
| 313 | +.. configuration-block:: |
234 | 314 |
|
235 |
| -# config/packages/prod/doctrine.yaml |
236 |
| -framework: |
237 |
| -cache: |
238 |
| -pools: |
239 |
| -doctrine.result_cache_pool: |
240 |
| -adapter: cache.app |
241 |
| -doctrine.system_cache_pool: |
242 |
| -adapter: cache.system |
| 315 | +.. code-block:: yaml |
243 | 316 |
|
244 |
| -doctrine: |
245 |
| -orm: |
246 |
| -# ... |
247 |
| -metadata_cache_driver: |
248 |
| -type: pool |
249 |
| -pool: doctrine.system_cache_pool |
250 |
| -query_cache_driver: |
251 |
| -type: pool |
252 |
| -pool: doctrine.system_cache_pool |
253 |
| -result_cache_driver: |
254 |
| -type: pool |
255 |
| -pool: doctrine.result_cache_pool |
| 317 | +# config/packages/prod/doctrine.yaml |
| 318 | +framework: |
| 319 | +cache: |
| 320 | +pools: |
| 321 | +doctrine.result_cache_pool: |
| 322 | +adapter: cache.app |
| 323 | +doctrine.system_cache_pool: |
| 324 | +adapter: cache.system |
256 | 325 |
|
257 |
| -# in addition to Symfony Cache pools, you can also use the |
258 |
| -# 'type: service' option to use any service as the cache |
259 |
| -query_cache_driver: |
260 |
| -type: service |
261 |
| -id: App\ORM\MyCacheService |
| 326 | +doctrine: |
| 327 | +orm: |
| 328 | +# ... |
| 329 | +metadata_cache_driver: |
| 330 | +type: pool |
| 331 | +pool: doctrine.system_cache_pool |
| 332 | +query_cache_driver: |
| 333 | +type: pool |
| 334 | +pool: doctrine.system_cache_pool |
| 335 | +result_cache_driver: |
| 336 | +type: pool |
| 337 | +pool: doctrine.result_cache_pool |
| 338 | +
|
| 339 | +# in addition to Symfony cache pools, you can also use the |
| 340 | +# 'type: service' option to use any service as a cache pool |
| 341 | +query_cache_driver: |
| 342 | +type: service |
| 343 | +id: App\ORM\MyCacheService |
| 344 | +
|
| 345 | + .. code-block:: php |
| 346 | +
|
| 347 | +use Symfony\Config\DoctrineConfig; |
| 348 | +use Symfony\Config\FrameworkConfig; |
| 349 | +
|
| 350 | +return static function (FrameworkConfig $framework, DoctrineConfig $doctrine): void { |
| 351 | +$framework |
| 352 | +->cache() |
| 353 | +->pool('doctrine.result_cache_pool') |
| 354 | +->adapters('cache.app') |
| 355 | +->pool('doctrine.system_cache_pool') |
| 356 | +->adapters('cache.sytsem'); |
| 357 | +
|
| 358 | +$doctrine->orm() |
| 359 | +// ... |
| 360 | +->entityManager('default') |
| 361 | +->metadataCacheDriver() |
| 362 | +->type('pool') |
| 363 | +->pool('doctrine.system_cache_pool') |
| 364 | +->queryCacheDriver() |
| 365 | +->type('pool') |
| 366 | +->pool('doctrine.system_cache_pool') |
| 367 | +->resultCacheDriver() |
| 368 | +->type('pool') |
| 369 | +->pool('doctrine.result_cache_pool') |
| 370 | +
|
| 371 | +// in addition to Symfony cache pools, you can also use the |
| 372 | +// 'type: service' option to use any service as a cache pool |
| 373 | +->queryCacheDriver() |
| 374 | +->type('service') |
| 375 | +->id(App\ORM\MyCacheService::class); |
| 376 | +}; |
262 | 377 |
|
263 | 378 | Mapping Configuration
|
264 | 379 | ~~~~~~~~~~~~~~~~~~~~~
|
|
0 commit comments