Reference for defining Doctrine entities in OrangeHRM — the docblock annotation conventions, table-name conventions (ohrm for new tables, hshr for legacy 4.x-imported tables), column types and options, ID strategies, relations (ManyToOne / OneToMany / ManyToMany with mappedBy / inversedBy / cascade / JoinColumn / JoinTable), ArrayCollection initialization, @ORM\EntityListeners for lifecycle (the only lifecycle pattern this codebase uses — not @HasLifecycleCallbacks), the project-specific Decorator pattern (DecoratorTrait + sibling Decorator class), and the NestedSet helper for tree-shaped entities. Use whenever the user is creating a new entity, adding columns or relations to an existing one, adding an EntityListener (typically for encrypting sensitive columns), writing a Decorator, working with a tree entity (Subunit pattern), or debugging "why is this field null after load" / "why does this relation not lazy-load." Companion to doctrine-bootstrap (how Doctrine is wired) and daos (querying entities).
Install with
Claude CodeCodexCursorGitHub CopilotGemini CLI
Supported by the Atlas install prompt. Skill-specific requirements vary.
Skill stats
Skills1CategorySecurityStars0
About this skill
Reference for defining Doctrine entities in OrangeHRM — the docblock annotation conventions, table-name conventions (ohrm for new tables, hshr for legacy 4.x-imported tables), column types and options, ID strategies, relations (ManyToOne / OneToMany / ManyToMany with mappedBy / inversedBy / cascade / JoinColumn / JoinTable), ArrayCollection initialization, @ORM\EntityListeners for lifecycle (the only lifecycle pattern this codebase uses — not @HasLifecycleCallbacks), the project-specific Decorator pattern (DecoratorTrait + sibling Decorator class), and the NestedSet helper for tree-shaped entities. Use whenever the user is creating a new entity, adding columns or relations to an existing one, adding an EntityListener (typically for encrypting sensitive columns), writing a Decorator, working with a tree entity (Subunit pattern), or debugging "why is this field null after load" / "why does this relation not lazy-load." Companion to doctrine-bootstrap (how Doctrine is wired) and daos (querying entities).
Quick start
Copy the install prompt. Use the green button above this README.
Send it to your agent. Paste it into your coding agent’s chat and send.
Review the setup. Your agent checks the skill’s instructions, requirements, and installation scope.
Reference for defining Doctrine entities in OrangeHRM — the docblock annotation conventions, table-name conventions (`ohrm_` for new tables, `hs_hr_` for legacy 4.x-imported tables), column types and options, ID strategies, relations (ManyToOne / OneToMany / ManyToMany with `mappedBy` / `inversedBy` / `cascade` / `JoinColumn` / `JoinTable`), `ArrayCollection` initialization, `@ORM\EntityListeners` for lifecycle (the only lifecycle pattern this codebase uses — not `@HasLifecycleCallbacks`), the project-specific Decorator pattern (`DecoratorTrait` + sibling `<Name>Decorator` class), and the `NestedSet` helper for tree-shaped entities. Use whenever the user is creating a new entity, adding columns or relations to an existing one, adding an EntityListener (typically for encrypting sensitive columns), writing a Decorator, working with a tree entity (Subunit pattern), or debugging "why is this field null after load" / "why does this relation not lazy-load." Companion to `doctrine-bootstrap` (how Doctrine is wired) and `daos` (querying entities).
About this listing
Category
Security
Reported license
GPL-3.0
Listing language (estimated)
English
Review status
Not individually reviewed
Agent compatibility
Atlas installation supports Claude Code, Codex, and Cursor. Skill-specific dependencies and features are checked during setup.