PHPackages                             ibexa/doctrine-schema - 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. ibexa/doctrine-schema

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

ibexa/doctrine-schema
=====================

Abstraction layer, on top of Doctrine, for cross-DBMS schema import

v5.0.6(2mo ago)41.1M↓20.6%1[1 PRs](https://github.com/ibexa/doctrine-schema/pulls)20(GPL-2.0-only or proprietary)PHPPHP  &gt;=8.3CI passing

Since Nov 12Pushed 2mo ago12 watchersCompare

[ Source](https://github.com/ibexa/doctrine-schema)[ Packagist](https://packagist.org/packages/ibexa/doctrine-schema)[ RSS](/packages/ibexa-doctrine-schema/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (24)Versions (115)Used By (20)

Doctrine Schema Bundle
======================

[](#doctrine-schema-bundle)

This Symfony Bundle provides basic abstraction layer for cross-DBMS schema import.

It introduces custom Yaml format for schema definition and provides autowired APIs.

Schema Builder
--------------

[](#schema-builder)

Provided by APIs defined on the `\Ibexa\Contracts\DoctrineSchema\SchemaImporterInterface` interface, imports given Yaml source string or Yaml file into `\Doctrine\DBAL\Schema` object.

Schema Exporter
---------------

[](#schema-exporter)

Provided by APIs defined on the `\Ibexa\Contracts\DoctrineSchema\SchemaExporterInterface` interface, exports given `\Doctrine\DBAL\Schema` object to the custom Yaml format.

SchemaBuilder
-------------

[](#schemabuilder)

Provided by APIs defined on the `\Ibexa\Contracts\DoctrineSchema\Builder\SchemaBuilderInterface`interface, is an extensibility point to be used by Symfony-based projects.

The `SchemaBuilder` is event-driven. To hook into the process of building schema, a custom `EventSubscriber` is required, e.g.

```
use Ibexa\Contracts\DoctrineSchema\Event\SchemaBuilderEvent;
use Ibexa\Contracts\DoctrineSchema\SchemaBuilderEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class BuildSchemaSubscriber implements EventSubscriberInterface
{
    private string $schemaFilePath;

    public function __construct(string $schemaFilePath)
    {
        $this->schemaFilePath = $schemaFilePath;
    }

    /**
     * @return string[]
     */
    public static function getSubscribedEvents(): array
    {
        return [
            SchemaBuilderEvents::BUILD_SCHEMA => ['onBuildSchema', 200],
        ];
    }

    public function onBuildSchema(SchemaBuilderEvent $event): void
    {
        $event
            ->getSchemaBuilder()
            ->importSchemaFromFile($this->schemaFilePath);
    }
}
```

Schema provided in this way can be imported into Schema object by e.g.:

```
    public function __construct(SchemaBuilder $schemaBuilder)
    {
        $this->schemaBuilder = $schemaBuilder;
    }

    public function importSchema(): void
    {
        $schema = $this->schemaBuilder->buildSchema();
        // ...
    }
```

COPYRIGHT
---------

[](#copyright)

Copyright (C) 1999-2025 Ibexa AS (formerly eZ Systems AS). All rights reserved.

LICENSE
-------

[](#license)

This source code is available separately under the following licenses:

A - Ibexa Business Use License Agreement (Ibexa BUL), version 2.4 or later versions (as license terms may be updated from time to time) Ibexa BUL is granted by having a valid Ibexa DXP (formerly eZ Platform Enterprise) subscription, as described at: For the full Ibexa BUL license text, please see:  (latest version applies)

AND

B - GNU General Public License, version 2 Grants an copyleft open source license with ABSOLUTELY NO WARRANTY. For the full GPL license text, please see:

###  Health Score

65

—

FairBetter than 99% of packages

Maintenance87

Actively maintained with recent releases

Popularity43

Moderate usage in the ecosystem

Community37

Small or concentrated contributor base

Maturity82

Battle-tested with a long release history

 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.

###  Release Activity

Cadence

Every ~14 days

Total

111

Last Release

75d ago

Major Versions

v4.6.23 → v5.0.12025-08-19

v4.6.24 → v5.0.22025-09-09

v4.6.25 → v5.0.32025-10-17

v4.6.26 → v5.0.42025-12-10

v4.6.28 → v5.0.62026-03-05

PHP version history (3 changes)v4.0.0-beta1PHP ^7.4

v4.0.0-beta5PHP ^7.4 || ^8.0

v5.0.0-beta1PHP  &gt;=8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/681611?v=4)[Ibexa Bot](/maintainers/ezrobot)[@ezrobot](https://github.com/ezrobot)

![](https://avatars.githubusercontent.com/u/130489?v=4)[Łukasz Serwatka](/maintainers/lserwatka)[@lserwatka](https://github.com/lserwatka)

---

Top Contributors

[![alongosz](https://avatars.githubusercontent.com/u/7099219?v=4)](https://github.com/alongosz "alongosz (52 commits)")[![Steveb-p](https://avatars.githubusercontent.com/u/3183926?v=4)](https://github.com/Steveb-p "Steveb-p (24 commits)")[![mnocon](https://avatars.githubusercontent.com/u/10993858?v=4)](https://github.com/mnocon "mnocon (20 commits)")[![adamwojs](https://avatars.githubusercontent.com/u/211967?v=4)](https://github.com/adamwojs "adamwojs (13 commits)")[![ibexa-yuna](https://avatars.githubusercontent.com/u/67897517?v=4)](https://github.com/ibexa-yuna "ibexa-yuna (11 commits)")[![Nattfarinn](https://avatars.githubusercontent.com/u/5822569?v=4)](https://github.com/Nattfarinn "Nattfarinn (6 commits)")[![webhdx](https://avatars.githubusercontent.com/u/10212760?v=4)](https://github.com/webhdx "webhdx (5 commits)")[![micszo](https://avatars.githubusercontent.com/u/13622502?v=4)](https://github.com/micszo "micszo (3 commits)")[![lserwatka](https://avatars.githubusercontent.com/u/130489?v=4)](https://github.com/lserwatka "lserwatka (3 commits)")[![wiewiurdp](https://avatars.githubusercontent.com/u/25502452?v=4)](https://github.com/wiewiurdp "wiewiurdp (2 commits)")[![OstafinL](https://avatars.githubusercontent.com/u/24355391?v=4)](https://github.com/OstafinL "OstafinL (1 commits)")[![tbialcz](https://avatars.githubusercontent.com/u/183398871?v=4)](https://github.com/tbialcz "tbialcz (1 commits)")[![konradoboza](https://avatars.githubusercontent.com/u/34310128?v=4)](https://github.com/konradoboza "konradoboza (1 commits)")[![mikolajkaraczyn](https://avatars.githubusercontent.com/u/60875046?v=4)](https://github.com/mikolajkaraczyn "mikolajkaraczyn (1 commits)")

---

Tags

ibexa-bundle

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/ibexa-doctrine-schema/health.svg)

```
[![Health](https://phpackages.com/badges/ibexa-doctrine-schema/health.svg)](https://phpackages.com/packages/ibexa-doctrine-schema)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

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

1.3k1.3M152](/packages/sulu-sulu)[sonata-project/entity-audit-bundle

Audit for Doctrine Entities

644989.8k1](/packages/sonata-project-entity-audit-bundle)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)

PHPackages © 2026

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