dev-toolings/superpowers-symfony110 installs
doctrine-fetch-modes
Optimize Doctrine fetching with DTO hydration (SELECT NEW), fetch joins, lazy loading, query hints, and DBAL 4 access
How do I install this agent skill?
npx skills add https://github.com/dev-toolings/superpowers-symfony --skill doctrine-fetch-modesIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides guidelines and reference material for Doctrine fetch mode optimization. No malicious patterns or security risks were detected.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Doctrine Fetch Modes (Symfony)
Use when
- A list or detail endpoint runs one query per row (N+1) on a relation.
- A read-only list needs a few columns, not full managed entities.
- Choosing
LAZY,EAGERorEXTRA_LAZYon a mapping, or porting ORM 2 code that relied onPARTIALobjects. - A report or projection query drops to raw SQL through DBAL 4.
Default workflow
- Confirm the N+1 or over-fetch in the Symfony profiler before changing any mapping.
- Keep relations on
fetch: 'LAZY'; setfetch: 'EXTRA_LAZY'on large collections socount(),contains()andslice()run targeted SQL. - Load the relations a use case needs with a fetch join in the repository (
addSelect()plusleftJoin()). - For read-only lists, project into a
readonlyDTO withSELECT NEW(constructor argument order must match theNEWlist). - Use
Query::HINT_READ_ONLYor an index-by alias (createQueryBuilder('p', 'p.id')) when the result is only displayed or looked up by id. - For raw SQL, use the DBAL 4 methods (
fetchAllAssociative(),fetchOne(),executeStatement()).
Guardrails
PARTIALin DQL fails on ORM 3.0 to 3.2 and only returns from 3.3: useSELECT NEWDTOs for read-only lists instead.- Avoid
fetch: 'EAGER'on a mapping; a fetch join in the query gives the same result per use case. SELECT NEWreturns DTOs, not managed entities: never modify or flush them.- DBAL 4 removed
query(),exec()andfetchAll().
Progressive disclosure
- Use this file for execution posture and risk controls.
- Open references when deep implementation details are needed.
Output contract
- Repository methods with the fetch strategy chosen per use case.
- DTO classes and the
SELECT NEWqueries that fill them. - Query count before and after, from the profiler or
doctrine:query:dql --show-sql.
References
reference.md
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/dev-toolings/superpowers-symfony/doctrine-fetch-modes">View doctrine-fetch-modes on skillZs</a>