PHPackages                             dimoussa/doctrine-db-mapper-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. dimoussa/doctrine-db-mapper-bundle

ActiveSymfony-bundle[Database &amp; ORM](/categories/database)

dimoussa/doctrine-db-mapper-bundle
==================================

Bundle Symfony pour générer automatiquement des entités Doctrine depuis une base de données MySQL avec support complet des relations (OneToMany, ManyToOne, ManyToMany)

1.5.2(1mo ago)261MITPHPPHP &gt;=8.1

Since Jan 13Pushed 1mo agoCompare

[ Source](https://github.com/DImoussa/doctrine-db-mapper-bundle)[ Packagist](https://packagist.org/packages/dimoussa/doctrine-db-mapper-bundle)[ RSS](/packages/dimoussa-doctrine-db-mapper-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (16)Versions (12)Used By (0)

Doctrine DB Mapper Bundle
=========================

[](#doctrine-db-mapper-bundle)

[![Latest Stable Version](https://camo.githubusercontent.com/b650bc3028b52d02cde14a08b10b08bfb373943c7fd89d62c8ccd2481b2f7a2e/68747470733a2f2f706f7365722e707567782e6f72672f64696d6f757373612f646f637472696e652d64622d6d61707065722d62756e646c652f762f737461626c65)](https://packagist.org/packages/dimoussa/doctrine-db-mapper-bundle)[![License](https://camo.githubusercontent.com/a22a73468e4c8f9e42c98b5e5f5b031e6d2f75118a0b01e8dda7211c22c2fe2b/68747470733a2f2f706f7365722e707567782e6f72672f64696d6f757373612f646f637472696e652d64622d6d61707065722d62756e646c652f6c6963656e7365)](https://packagist.org/packages/dimoussa/doctrine-db-mapper-bundle)

> **[English](#english)** | **[Français](#fran%C3%A7ais)**

---

English
-------

[](#english)

A Symfony bundle to automatically generate Doctrine entities from a MySQL database with full relationship support (OneToMany, ManyToOne, ManyToMany).

### 📦 Installation

[](#-installation)

```
composer require dimoussa/doctrine-db-mapper-bundle
```

### ⚙️ Configuration

[](#️-configuration)

Configure your MySQL connection in `.env`:

```
DATABASE_URL="mysql://user:password@localhost:3306/my_database"
```

### 🚀 Usage

[](#-usage)

#### Generate all entities

[](#generate-all-entities)

```
php bin/console dbmapper:generate-entities src/Entity
```

#### Generate a specific table

[](#generate-a-specific-table)

```
php bin/console dbmapper:generate-entities src/Entity --table=users
```

#### Preview pending schema diff (optional safety step before generation)

[](#preview-pending-schema-diff-optional-safety-step-before-generation)

```
php bin/console dbmapper:generate-entities src/Entity --schema-preview
```

This shows the SQL Doctrine would run to align the database before entities are regenerated.

#### Regenerate without losing your custom code

[](#regenerate-without-losing-your-custom-code)

When an entity file already exists, the bundle automatically merges the generated code with your existing file. Custom methods, non-ORM properties, interfaces, traits, and `use` statements are preserved.

```
# Regenerate all entities while preserving custom code
php bin/console dbmapper:generate-entities src/Entity --merge

# Regenerate a specific table only while preserving custom code
php bin/console dbmapper:generate-entities src/Entity --merge --table=users
```

### 📋 Output example

[](#-output-example)

```
📊 Analyzing the database schema...
🔗 Analyzing relationships between tables...
  → ManyToMany association tables detected: user_roles, post_tags
⚙️  Generating entities and repositories...
⏭️  System table ignored: messenger_messages (configured in ignored_tables)
⏭️  Association table ignored: user_roles (handled as ManyToMany)
✅ User.php generated [2 OneToMany] [1 ManyToMany]
✅ Post.php generated [1 OneToMany] [1 ManyToMany]
✅ Comment.php generated
🧹 Clearing Symfony cache...
✅ Symfony cache cleared.
🔄 Synchronizing database with generated mapping...
✅ Database synchronized with Doctrine mapping.
✨ Generation completed successfully!

```

> The bundle automatically synchronizes the database after generation to resolve cosmetic differences (index naming, `text` → `longtext`, etc.).

#### Manage the database (modify, view the schema...)

[](#manage-the-database-modify-view-the-schema)

```
php bin/console dbmapper:modify-entities
```

#### Interactive mode example

[](#interactive-mode-example)

The `dbmapper:modify-entities` command launches a fully interactive menu to manage your database schema:

```
[DbMapper] Interactive schema modification mode

What do you want to do?
  [0] List tables
  [1] Choose a table to modify
  [2] Show current change plan
  [3] Preview SQL to be executed
  [4] Apply changes to the database
  [5] Quit
 > 1

Choose a table to modify:
  [0] users
  [1] posts
  [2] comments
 > 0

Selected table: users
What do you want to do?
  [0] View attributes (columns)
  [1] Add a new attribute
  [2] Manage relations
  [3] Back to main menu
 > 0

Columns of the table users:
 - id (integer), nullable: NO
 - username (string), nullable: NO
 - email (string), nullable: NO
 - created_at (datetime), nullable: YES

Selected table: users
What do you want to do?
  [0] View attributes (columns)
  [1] Add a new attribute
  [2] Manage relations
  [3] Back to main menu
 > 1

New attribute (column) name: avatar
Doctrine type (e.g.: string, integer, text, boolean, datetime, float, decimal): string
Can this attribute be NULL?
  [0] no
  [1] yes
 > 1

New column summary:
 - Table : users
 - Name  : avatar
 - Type  : string
 - NULL  : yes
Confirm adding this column to the change plan?
  [0] no
  [1] yes
 > 1

Column added to the change plan (no actual changes made yet).

What do you want to do?
  [0] List tables
  [1] Choose a table to modify
  [2] Show current change plan
  [3] Preview SQL to be executed
  [4] Apply changes to the database
  [5] Quit
 > 3

SQL queries to be executed:
  ALTER TABLE users ADD avatar VARCHAR(255) DEFAULT NULL;

 > 4

Change plan:
 - [ADD COLUMN] Table users : avatar (string), nullable: yes

SQL queries to be executed:
  ALTER TABLE users ADD avatar VARCHAR(255) DEFAULT NULL;

Are you sure you want to apply these changes to the database?
  [0] no
  [1] yes
 > 1

Applying changes...
✓ All changes have been applied successfully!
 ✓ ALTER TABLE users ADD avatar VARCHAR(255) DEFAULT NULL

The change plan has been cleared.

```

### ✨ What the bundle generates

[](#-what-the-bundle-generates)

- ✅ Doctrine entities with correct PHP types
- ✅ Automatic relationships (OneToMany, ManyToOne, ManyToMany)
- ✅ Smart `AUTO_INCREMENT` detection (no forced changes on non-auto-increment PKs)
- ✅ Correct ManyToMany composite PK ordering (matches the real database)
- ✅ Getters and setters
- ✅ `add`/`remove` methods for collections
- ✅ Repositories
- ✅ Smart entity merging on regeneration (preserves custom methods, non-ORM properties, interfaces, traits, and `use` statements)
- ✅ Automatic post-generation database synchronization (handles index renaming, type adjustments, and composite PK changes with FK constraints)

### 📝 Requirements

[](#-requirements)

- PHP &gt;= 8.1
- Symfony ^6.0 | ^7.0
- Doctrine ORM ^2.14 | ^3.0
- MySQL/MariaDB database

### 📄 License

[](#-license)

MIT

### 👤 Author

[](#-author)

**Diallo Moussa**

- Email:
- GitHub: [@DImoussa](https://github.com/DImoussa)

---

Français
--------

[](#français)

Bundle Symfony pour générer automatiquement des entités Doctrine depuis une base de données MySQL avec support complet des relations (OneToMany, ManyToOne, ManyToMany).

### 📦 Installation

[](#-installation-1)

```
composer require dimoussa/doctrine-db-mapper-bundle
```

### ⚙️ Configuration

[](#️-configuration-1)

Configurez votre connexion MySQL dans `.env` :

```
DATABASE_URL="mysql://user:password@localhost:3306/ma_base"
```

### 🚀 Utilisation

[](#-utilisation)

#### Générer toutes les entités

[](#générer-toutes-les-entités)

```
php bin/console dbmapper:generate-entities src/Entity
```

#### Générer une table spécifique

[](#générer-une-table-spécifique)

```
php bin/console dbmapper:generate-entities src/Entity --table=users
```

#### Prévisualiser le diff SQL (optionnel avant la génération)

[](#prévisualiser-le-diff-sql-optionnel-avant-la-génération)

```
php bin/console dbmapper:generate-entities src/Entity --schema-preview
```

Affiche les requêtes SQL que Doctrine exécuterait pour synchroniser la base avant la régénération des entités.

#### Régénérer sans perdre votre code custom

[](#régénérer-sans-perdre-votre-code-custom)

Lorsqu'un fichier d'entité existe déjà, le bundle fusionne automatiquement le code généré avec le fichier existant. Les méthodes custom, les propriétés non-ORM, les interfaces, les traits et les `use` statements sont préservés.

```
# Régénérer toutes les entités en préservant le code custom
php bin/console dbmapper:generate-entities src/Entity --merge

# Régénérer une table spécifique uniquement en préservant le code custom
php bin/console dbmapper:generate-entities src/Entity --merge --table=users
```

### 📋 Exemple de sortie

[](#-exemple-de-sortie)

```
📊 Analyse du schéma de la base de données...
🔗 Analyse des relations entre tables...
  → Tables d'association ManyToMany détectées: user_roles, post_tags
⚙️  Génération des entités et repositories...
⏭️  Table système ignorée: messenger_messages (configurée dans ignored_tables)
⏭️  Table d'association ignorée: user_roles (gérée comme ManyToMany)
✅ User.php généré [2 OneToMany] [1 ManyToMany]
✅ Post.php généré [1 OneToMany] [1 ManyToMany]
✅ Comment.php généré
🧹 Nettoyage du cache Symfony...
✅ Cache Symfony nettoyé avec succès.
🔄 Synchronisation de la base de données avec le mapping généré...
✅ Base de données synchronisée avec le mapping Doctrine.
✨ Génération terminée avec succès !

```

> Le bundle synchronise automatiquement la base après génération pour résoudre les différences cosmétiques (nommage d'index, `text` → `longtext`, etc.).

#### Gérer la base de donnée (modification, visualisation de la base...)

[](#gérer-la-base-de-donnée-modification-visualisation-de-la-base)

```
php bin/console dbmapper:modify-entities
```

#### Exemple du mode interactif

[](#exemple-du-mode-interactif)

La commande `dbmapper:modify-entities` lance un menu entièrement interactif pour gérer le schéma de votre base de données :

```
[DbMapper] Mode interactif de modification du schéma

Que veux-tu faire ?
  [0] Lister les tables
  [1] Choisir une table à modifier
  [2] Afficher le plan des changements en cours
  [3] Prévisualiser le SQL qui sera exécuté
  [4] Appliquer les changements dans la base de données
  [5] Quitter
 > 1

Choisis une table à modifier :
  [0] users
  [1] posts
  [2] comments
 > 0

Table sélectionnée : users
Que veux-tu faire ?
  [0] Voir les attributs (colonnes)
  [1] Ajouter un nouvel attribut
  [2] Gérer les relations
  [3] Revenir au menu principal
 > 0

Colonnes de la table users :
 - id (integer), nullable: NO
 - username (string), nullable: NO
 - email (string), nullable: NO
 - created_at (datetime), nullable: YES

Table sélectionnée : users
Que veux-tu faire ?
  [0] Voir les attributs (colonnes)
  [1] Ajouter un nouvel attribut
  [2] Gérer les relations
  [3] Revenir au menu principal
 > 1

Nom du nouvel attribut (colonne) : avatar
Type Doctrine du nouvel attribut (ex: string, integer, text, boolean, datetime, float, decimal) : string
Ce nouvel attribut peut-il être NULL ?
  [0] non
  [1] oui
 > 1

Récapitulatif de la nouvelle colonne :
 - Table : users
 - Nom   : avatar
 - Type  : string
 - NULL  : oui
Confirmer l'ajout de cette colonne au plan de changements ?
  [0] non
  [1] oui
 > 1

Colonne ajoutée au plan de changements (aucune modification réelle effectuée pour l'instant).

Que veux-tu faire ?
  [0] Lister les tables
  [1] Choisir une table à modifier
  [2] Afficher le plan des changements en cours
  [3] Prévisualiser le SQL qui sera exécuté
  [4] Appliquer les changements dans la base de données
  [5] Quitter
 > 3

Requêtes SQL qui seront exécutées :
  ALTER TABLE users ADD avatar VARCHAR(255) DEFAULT NULL;

 > 4

Plan de changements :
 - [ADD COLUMN] Table users : avatar (string), nullable: oui

Requêtes SQL qui seront exécutées :
  ALTER TABLE users ADD avatar VARCHAR(255) DEFAULT NULL;

Êtes-vous sûr de vouloir appliquer ces changements dans la base de données ?
  [0] non
  [1] oui
 > 1

Application des changements...
✓ Tous les changements ont été appliqués avec succès !
 ✓ ALTER TABLE users ADD avatar VARCHAR(255) DEFAULT NULL

Le plan de changements a été vidé.

```

### ✨ Ce que le bundle génère

[](#-ce-que-le-bundle-génère)

- ✅ Entités Doctrine avec types PHP corrects
- ✅ Relations automatiques (OneToMany, ManyToOne, ManyToMany)
- ✅ Détection intelligente de l'`AUTO_INCREMENT` (pas de modification forcée sur les PK non auto-incrémentées)
- ✅ Ordre correct des PK composites ManyToMany (correspond à la base réelle)
- ✅ Getters et setters
- ✅ Méthodes `add`/`remove` pour les collections
- ✅ Repositories
- ✅ Fusion intelligente des entités lors d'une régénération (préserve les méthodes custom, les propriétés non-ORM, les interfaces, les traits et les `use` statements)
- ✅ Synchronisation automatique post-génération (gère le renommage d'index, les ajustements de types et les changements de PK composites avec contraintes FK)

### 📝 Prérequis

[](#-prérequis)

- PHP &gt;= 8.1
- Symfony ^6.0 | ^7.0
- Doctrine ORM ^2.14 | ^3.0
- Base de données MySQL/MariaDB

### 📄 Licence

[](#-licence)

MIT

### 👤 Auteur

[](#-auteur)

**Diallo Moussa**

- Email:
- GitHub: [@DImoussa](https://github.com/DImoussa)

---

[![Latest Stable Version](https://camo.githubusercontent.com/b650bc3028b52d02cde14a08b10b08bfb373943c7fd89d62c8ccd2481b2f7a2e/68747470733a2f2f706f7365722e707567782e6f72672f64696d6f757373612f646f637472696e652d64622d6d61707065722d62756e646c652f762f737461626c65)](https://packagist.org/packages/dimoussa/doctrine-db-mapper-bundle)[![Total Downloads](https://camo.githubusercontent.com/85574cd585ebb3feb069fe703ac594bb7a94d921d52d506ce538ec7781588c8f/68747470733a2f2f706f7365722e707567782e6f72672f64696d6f757373612f646f637472696e652d64622d6d61707065722d62756e646c652f646f776e6c6f616473)](https://packagist.org/packages/dimoussa/doctrine-db-mapper-bundle)[![License](https://camo.githubusercontent.com/a22a73468e4c8f9e42c98b5e5f5b031e6d2f75118a0b01e8dda7211c22c2fe2b/68747470733a2f2f706f7365722e707567782e6f72672f64696d6f757373612f646f637472696e652d64622d6d61707065722d62756e646c652f6c6963656e7365)](https://packagist.org/packages/dimoussa/doctrine-db-mapper-bundle)[![PHP Version](https://camo.githubusercontent.com/6518db1335bf20fdff07253dc6d6d0cec955b5fb6a8ef1382ac6d73687ecc07f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e312d626c7565)](https://www.php.net/)[![Symfony](https://camo.githubusercontent.com/1b8352322c4ed2d8abd7c6355b760b144cf9a210a655f468724fa268446b52ca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d253545362e30253743253545372e302d627269676874677265656e)](https://symfony.com/)

###  Health Score

45

—

FairBetter than 92% of packages

Maintenance97

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 75.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Recently: every ~0 days

Total

11

Last Release

37d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cb413c1e8d7320fdf493d01afd49f182d8e61ec823eb33c565fc3a143e71210c?d=identicon)[DImoussa](/maintainers/DImoussa)

---

Top Contributors

[![DImoussa](https://avatars.githubusercontent.com/u/145683211?v=4)](https://github.com/DImoussa "DImoussa (31 commits)")[![moussakbq](https://avatars.githubusercontent.com/u/212558126?v=4)](https://github.com/moussakbq "moussakbq (10 commits)")

---

Tags

symfonybundledatabasegeneratorormmysqldoctrineentity

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dimoussa-doctrine-db-mapper-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/dimoussa-doctrine-db-mapper-bundle/health.svg)](https://phpackages.com/packages/dimoussa-doctrine-db-mapper-bundle)
```

###  Alternatives

[fresh/doctrine-enum-bundle

Provides support of ENUM type for Doctrine2 in Symfony applications.

4636.8M12](/packages/fresh-doctrine-enum-bundle)[sonata-project/doctrine-orm-admin-bundle

Integrate Doctrine ORM into the SonataAdminBundle

46117.7M155](/packages/sonata-project-doctrine-orm-admin-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M151](/packages/sulu-sulu)[scienta/doctrine-json-functions

A set of extensions to Doctrine that add support for json query functions.

58523.9M35](/packages/scienta-doctrine-json-functions)[sonata-project/entity-audit-bundle

Audit for Doctrine Entities

644989.8k1](/packages/sonata-project-entity-audit-bundle)[kreait/firebase-bundle

Symfony Bundle for the Firebase Admin SDK

1534.7M2](/packages/kreait-firebase-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
