PHPackages                             hydrax-skarrag/mwbs-exporter - 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. hydrax-skarrag/mwbs-exporter

ActiveCli[Database &amp; ORM](/categories/database)

hydrax-skarrag/mwbs-exporter
============================

MySQL Workbench Schema Exporter for Doctrine2 Annotations

097PHP

Since Aug 19Pushed 12y ago3 watchersCompare

[ Source](https://github.com/HydraxSkarrag/mwbs-exporter)[ Packagist](https://packagist.org/packages/hydrax-skarrag/mwbs-exporter)[ RSS](/packages/hydrax-skarrag-mwbs-exporter/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (2)Used By (0)

README
======

[](#readme)

MySQL Workbench Schema Exporter for Doctrine2 Annotations

ATTENTION
---------

[](#attention)

This fork will only focus on Doctrine 2 Annotation () exports for use in Symfony 2 projects.

Main changes for this fork
--------------------------

[](#main-changes-for-this-fork)

- Option to generate base classes
- Other multi reference handling. Given foreign key is used instead of a naming convention.

Prerequisites
-------------

[](#prerequisites)

- PHP 5.3+
- Composer to install the dependencies

Command Line Interface (CLI)
----------------------------

[](#command-line-interface-cli)

There is a new CLI to simplify the export process named `mwbs-export.php`, you can look under the `cli` folder. The CLI has feature to customize export configuration before exporting. By default, CLI application will use config file `export.json` located in the current directory to supply the parameter if it find it. To disable this behaviour, see the option below.

The syntax of CLI:

```
php cli/export.php [options] FILE [DEST]

```

Where:

- `options`:
    - `--export=type`, choose the result of the export, currently available types:
        - `doctrine2-annotation`, Doctrine 2.0 Annotation classes
    - `--config=file`, read export parameters from file (in JSON format)
    - `--saveconfig`, save export parameters to file `export.json`, later can be used as value for `--config=file`
    - `--list-exporter`, show all available exporter
    - `--no-auto-config`, disable automatic config file lookup
    - `--zip`, compress the result
    - `--help`, show the usage (or suppress any parameters)
- `FILE`, the mwb file to export
- `DEST`, the destination directory (optional), if not specified current directory assumed

Sample usage:

```
php cli/export.php --export=doctrine2-annotation example/data/test.mwb ./generated
php cli/export.php --zip example/data/test.mwb

```

Sample export paramaters (JSON) for doctrine2-annotation:

```
{
    "export": "doctrine2-annotation",
    "zip": false,
    "dir": "temp",
    "params": {
        "generateBaseClasses": true,
        "backupExistingFile": true,
        "skipPluralNameChecking": false,
        "enhanceManyToManyDetection": true,
        "bundleNamespace": "",
        "entityNamespace": "",
        "repositoryNamespace": "",
        "useAnnotationPrefix": "ORM\\",
        "useAutomaticRepository": true,
        "indentation": 4,
        "filename": "%entity%.%extension%",
        "quoteIdentifier": false
    }
}

```

Exporter Options
----------------

[](#exporter-options)

### Exporter options

[](#exporter-options-1)

- `indentation`

    The indentation size for generated code.
- `useTabs`

    Use tabs for indentation instead of spaces. Setting this option will ignore the `indentation`-option
- `filename`

    The output filename format, use the following tag `%schema%`, `%table%`, `%entity%`, and `%extension%` to allow the filename to be replaced with contextual data. Default is `%entity%.%extension%`.
- `skipPluralNameChecking`

    Skip checking the plural name of model and leave as is, useful for non English table names. Default is `false`.
- `backupExistingFile`

    If target already exists create a backup before replacing the content. Default is `true`.
- `enhanceManyToManyDetection`

    If enabled, many to many relations between tables will be added to generated code. Default is `true`.
- `logToConsole`

    If enabled, output the log to console. Default is `false`.
- `logFile`

    If specified, output the log to a file. If this option presence, option `logToConsole` will be ignored instead. Default is empty.
- `generateBaseClasses`

    Generate Entity Base Classes
- `useAnnotationPrefix`

    Doctrine annotation prefix. Default is `ORM\`.
- `useAutomaticRepository`

    See above.
- `bundleNamespace`

    See above.
- `entityNamespace`

    See above.
- `repositoryNamespace`

    See above.
- `skipGetterAndSetter`

    Don't generate columns getter and setter. Default is `false`.
- `generateEntitySerialization`

    Generate method `__sleep()` to include only real columns when entity is serialized. Default is `true`.
- `quoteIdentifier`

    If this option is enabled, all table names and column names will be quoted using backtick (```). Usefull when the table name or column name contains reserved word. Default is `false`.

### MySQL-Workbench Comment behavior

[](#mysql-workbench-comment-behavior)

- `{MwbExporter:external}true{/MwbExporter:external}` (applied to Table, View)

    Mark table/view as external to skip table/view code generation. For Doctrine use `{d:external}true{/d:external}` instead.
- `{d:bundleNamespace}AcmeBundle{/d:bundleNamespace}` (applied to Table)

    Override `bundleNamespace` option.
- `{d:m2m}false{/d:m2m}` (applied to Table)

    MySQL Workbench schema exporter tries to automatically guess which tables are many-to-many mapping tables and will not generate entity classes for these tables. A table is considered a mapping table, if it contains exactly two foreign keys to different tables and those tables are not many-to-many mapping tables.

    Sometimes this guessing is incorrect for you. But you can add a hint in the comment of the table, to show that it is no mapping table. Just use "{d:m2m}false{/d:m2m}" anywhere in the comment of the table.
- `{d:unidirectional}true{/d:unidirectional}` (applied to ForeignKey)

    All foreign keys will result in a bidirectional relation by default. If you only want a unidirectional relation, add a flag to the comment of the foreign key.
- `{d:owningSide}true{/d:owningSide}` (applied to ForeignKey)

    In a bi-directional many-to-many mapping table the owning side of the relation is randomly selected. If you add this hint to one foreign key of the m2m-table, you can define the owning side for Doctrine.
- `{d:cascade}persist, merge, remove, detach, all{/d:cascade}` (applied to ForeignKey)

    You can specify Doctrine cascade options as a comment on a foreign key. The will be generated into the Annotation. ([Reference](http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-associations.html#transitive-persistence-cascade-operations))
- `{d:fetch}EAGER{/d:fetch}` (applied to ForeignKey)

    You can specify the fetch type for relations in the comment of a foreign key. (EAGER or LAZY, doctrine default is LAZY)
- `{d:orphanRemoval}true{/d:orphanRemoval}` (applied to ForeignKey)

    Another option you can set in the comments of foreign key. ([Reference](http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-associations.html#orphan-removal))

Links
-----

[](#links)

- [MySQL Workbench](http://wb.mysql.com/)
- [Doctrine Project](http://www.doctrine-project.org/)
- [Symfony Project](http://www.symfony.com/)

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/51b544faed1ff9842f14daa233d39e3cce902cb11890b36225c4d4e5bd1783f1?d=identicon)[HydraxSkarrag](/maintainers/HydraxSkarrag)

---

Top Contributors

[![johmue](https://avatars.githubusercontent.com/u/281784?v=4)](https://github.com/johmue "johmue (127 commits)")[![tohenk](https://avatars.githubusercontent.com/u/350747?v=4)](https://github.com/tohenk "tohenk (90 commits)")[![meven](https://avatars.githubusercontent.com/u/620941?v=4)](https://github.com/meven "meven (20 commits)")[![rvock](https://avatars.githubusercontent.com/u/209159?v=4)](https://github.com/rvock "rvock (18 commits)")[![armandabric](https://avatars.githubusercontent.com/u/95120?v=4)](https://github.com/armandabric "armandabric (13 commits)")[![allansun](https://avatars.githubusercontent.com/u/20531?v=4)](https://github.com/allansun "allansun (10 commits)")[![HydraxSkarrag](https://avatars.githubusercontent.com/u/5442838?v=4)](https://github.com/HydraxSkarrag "HydraxSkarrag (9 commits)")[![fgaudin](https://avatars.githubusercontent.com/u/118230?v=4)](https://github.com/fgaudin "fgaudin (6 commits)")[![Easen](https://avatars.githubusercontent.com/u/111948?v=4)](https://github.com/Easen "Easen (5 commits)")[![Yoda-BZH](https://avatars.githubusercontent.com/u/751889?v=4)](https://github.com/Yoda-BZH "Yoda-BZH (4 commits)")[![drowe](https://avatars.githubusercontent.com/u/234503?v=4)](https://github.com/drowe "drowe (2 commits)")[![drymek](https://avatars.githubusercontent.com/u/492240?v=4)](https://github.com/drymek "drymek (2 commits)")[![sdenev](https://avatars.githubusercontent.com/u/1447657?v=4)](https://github.com/sdenev "sdenev (1 commits)")[![xeader](https://avatars.githubusercontent.com/u/1153759?v=4)](https://github.com/xeader "xeader (1 commits)")

### Embed Badge

![Health badge](/badges/hydrax-skarrag-mwbs-exporter/health.svg)

```
[![Health](https://phpackages.com/badges/hydrax-skarrag-mwbs-exporter/health.svg)](https://phpackages.com/packages/hydrax-skarrag-mwbs-exporter)
```

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.4k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M546](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M211](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

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