Skip to content

Commit

Permalink
Add a recipe for DoctrineBundle 2.13
Browse files Browse the repository at this point in the history
This recipe avoids getting deprecations from the ORM by turning on new
settings.
For the identity generation precedence, using `identity` is the best
choice for new projects (especially when using DBAL 4.x from the start).
  • Loading branch information
stof committed Oct 10, 2024
1 parent 74769e1 commit 72a06c6
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 0 deletions.
48 changes: 48 additions & 0 deletions doctrine/doctrine-bundle/2.13/config/packages/doctrine.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'

# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
#server_version: '16'
use_savepoints: true
orm:
auto_generate_proxy_classes: true
enable_lazy_ghost_objects: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
report_fields_where_declared: true
identity_generation_preferences:
Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity
mappings:
App:
is_bundle: false
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App

when@test:
doctrine:
dbal:
# "TEST_TOKEN" is typically set by ParaTest
dbname_suffix: '_test%env(default::TEST_TOKEN)%'

when@prod:
doctrine:
orm:
auto_generate_proxy_classes: false
proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies'
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
51 changes: 51 additions & 0 deletions doctrine/doctrine-bundle/2.13/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"bundles": {
"Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle": ["all"]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/",
"src/": "%SRC_DIR%/"
},
"env": {
"#1": "Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url",
"#2": "IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml",
"#3": "",
"#4": "DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/data.db\"",
"#5": "DATABASE_URL=\"mysql://app:[email protected]:3306/app?serverVersion=8.0.32&charset=utf8mb4\"",
"#6": "DATABASE_URL=\"mysql://app:[email protected]:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4\"",
"DATABASE_URL": "postgresql://app:[email protected]:5432/app?serverVersion=16&charset=utf8"
},
"dockerfile": [
"RUN install-php-extensions pdo_pgsql"
],
"docker-compose": {
"docker-compose.yml": {
"services": [
"database:",
" image: postgres:${POSTGRES_VERSION:-16}-alpine",
" environment:",
" POSTGRES_DB: ${POSTGRES_DB:-app}",
" # You should definitely change the password in production",
" POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}",
" POSTGRES_USER: ${POSTGRES_USER:-app}",
" volumes:",
" - database_data:/var/lib/postgresql/data:rw",
" # You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!",
" # - ./docker/db/data:/var/lib/postgresql/data:rw"
],
"volumes": ["database_data:"]
},
"docker-compose.override.yml": {
"services": [
"database:",
" ports:",
" - \"5432\""
]
}
},
"conflict": {
"doctrine/orm": "<2.14",
"symfony/dependency-injection": "<6.2",
"symfony/framework-bundle": "<5.3"
}
}
4 changes: 4 additions & 0 deletions doctrine/doctrine-bundle/2.13/post-install.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* Modify your DATABASE_URL config in <fg=green>.env</>

* Configure the <fg=green>driver</> (postgresql) and
<fg=green>server_version</> (16) in <fg=green>config/packages/doctrine.yaml</>
Empty file.
Empty file.

0 comments on commit 72a06c6

Please sign in to comment.