roukmoute / doctrine-prefix-bundle
Listener that prefixes tables and sequences
Installs: 19 380
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/roukmoute/doctrine-prefix-bundle
Requires
- php: ^8.1
- doctrine/event-manager: ^2.0
- doctrine/orm: ^3.0
- symfony/config: ^6.4 || ^7.0
- symfony/dependency-injection: ^6.4 || ^7.0
- symfony/http-kernel: ^6.4 || ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.5 || ^11.0
- dev-master / 2.1.x-dev
- v2.0.0
- v1.0.2
- v1.0.1
- v1.0
- v0.9
- v0.8
- dev-chore/bump-branch-alias
- dev-feature/update-readme
- dev-feature/unique-constraints-prefix
- dev-feature/tests-and-ci
- dev-feature/treebuilder-update
- dev-feature/classmetadata-update
- dev-feature/event-listener-migration
- dev-feature/update-dependencies
- dev-remove_default_prefix
This package is auto-updated.
Last update: 2026-01-20 23:36:32 UTC
README
A Symfony bundle that automatically prefixes Doctrine ORM table names, indexes, unique constraints, and PostgreSQL sequences.
Prefixes are useful when you need to:
- Share a database with tables from another project
- Use reserved SQL keywords as entity names (like
userorgroup) - Organize tables by application or module
Requirements
- PHP ^8.1
- Symfony ^6.4 || ^7.0
- Doctrine ORM ^3.0
Installation
composer require roukmoute/doctrine-prefix-bundle
With Symfony Flex, the bundle is automatically registered.
Configuration
# config/packages/roukmoute_doctrine_prefix.yaml roukmoute_doctrine_prefix: prefix: 'app_'
Options
| Option | Type | Default | Description |
|---|---|---|---|
prefix |
string | '' |
The prefix to prepend to names |
bundles |
array | [] |
If set, only entities from these namespaces will be prefixed |
encoding |
string | 'UTF-8' |
The encoding for the prefix |
Example with bundle filtering
roukmoute_doctrine_prefix: prefix: 'app_' bundles: - 'App\Entity' - 'Acme\BlogBundle\Entity'
What gets prefixed?
| Element | Example (prefix: app_) |
|---|---|
| Table names | user → app_user |
| Index names | idx_email → app_idx_email |
| Unique constraint names | uniq_email → app_uniq_email |
| Many-to-many join tables | user_role → app_user_role |
| PostgreSQL sequences | user_id_seq → app_user_id_seq |
Example
use Doctrine\ORM\Mapping as ORM; #[ORM\Entity] #[ORM\Table( indexes: [new ORM\Index(name: 'idx_email', columns: ['email'])], uniqueConstraints: [new ORM\UniqueConstraint(name: 'uniq_username', columns: ['username'])] )] class User { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 180)] private ?string $email = null; #[ORM\Column(length: 50)] private ?string $username = null; #[ORM\ManyToMany(targetEntity: Role::class)] private Collection $roles; }
With prefix: 'app_', this will generate:
- Table:
app_user - Index:
app_idx_email - Unique constraint:
app_uniq_username - Join table:
app_user_role
License
MIT