PHPackages                             alesitom/hybrid-id-doctrine - 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. alesitom/hybrid-id-doctrine

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

alesitom/hybrid-id-doctrine
===========================

Doctrine integration for HybridId — DBAL type and ORM ID generator

v2.1.0(2mo ago)00[2 PRs](https://github.com/alesitom/hybrid-id-doctrine/pulls)MITPHPPHP ^8.3CI passing

Since Feb 16Pushed 2mo agoCompare

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

READMEChangelog (4)Dependencies (6)Versions (12)Used By (0)

HybridId for Doctrine
=====================

[](#hybridid-for-doctrine)

Doctrine integration for [HybridId](https://github.com/alesitom/hybridId_package) — DBAL type and ORM ID generator for compact, time-sortable unique IDs.

[![Tests](https://camo.githubusercontent.com/bffd8a29da61b7acf7f70fe5a9da389c5a00e1cf43e96253d7512234c94cae26/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f616c657369746f6d2f6879627269642d69642d646f637472696e652f63692e796d6c3f7374796c653d666c61742d737175617265266c6162656c3d7465737473)](https://github.com/alesitom/hybrid-id-doctrine/actions)[![Coverage](https://camo.githubusercontent.com/1c74f7dec391e929cf70daff4c2d19b1ebf90094f43062e47a0517629ebfb853/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f616c657369746f6d2f6879627269642d69642d646f637472696e653f7374796c653d666c61742d737175617265)](https://codecov.io/gh/alesitom/hybrid-id-doctrine)[![PHPStan](https://camo.githubusercontent.com/38722f611b1083b1ea52358c73c42c40d08de176989d463cd9d588d25b97da48/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d6c6576656c2532306d61782d626c75653f7374796c653d666c61742d737175617265)](https://phpstan.org/)

Installation
------------

[](#installation)

```
composer require alesitom/hybrid-id-doctrine
```

Setup
-----

[](#setup)

Register the DBAL type in your application bootstrap:

```
use Doctrine\DBAL\Types\Type;
use HybridId\Doctrine\HybridIdType;

Type::addType(HybridIdType::NAME, HybridIdType::class);
```

For Symfony, add to `config/packages/doctrine.yaml`:

```
doctrine:
    dbal:
        types:
            hybrid_id: HybridId\Doctrine\HybridIdType
```

Entity Mapping
--------------

[](#entity-mapping)

```
use Doctrine\ORM\Mapping as ORM;
use HybridId\Doctrine\HybridIdGenerator;

#[ORM\Entity]
class User
{
    #[ORM\Id]
    #[ORM\Column(type: 'hybrid_id', length: 29)]
    #[ORM\GeneratedValue(strategy: 'CUSTOM')]
    #[ORM\CustomIdGenerator(class: HybridIdGenerator::class)]
    private string $id;

    // ...

    public function getId(): string
    {
        return $this->id;
    }
}
```

Prefixes
--------

[](#prefixes)

Add a static `hybridIdPrefix()` method to your entity for Stripe-style prefixed IDs:

```
#[ORM\Entity]
class Order
{
    #[ORM\Id]
    #[ORM\Column(type: 'hybrid_id', length: 29)]
    #[ORM\GeneratedValue(strategy: 'CUSTOM')]
    #[ORM\CustomIdGenerator(class: HybridIdGenerator::class)]
    private string $id;

    public static function hybridIdPrefix(): string
    {
        return 'ord';
    }
}
```

Custom Generator Configuration
------------------------------

[](#custom-generator-configuration)

For custom profiles or explicit node assignment, register a pre-configured generator as a service:

```
use HybridId\Doctrine\HybridIdGenerator;
use HybridId\HybridIdGenerator as CoreGenerator;

$core = new CoreGenerator(profile: 'extended', node: 'A1', requireExplicitNode: true);
$generator = new HybridIdGenerator(generator: $core, prefix: 'usr');
```

In Symfony, register as a service:

```
services:
    HybridId\Doctrine\HybridIdGenerator:
        arguments:
            $generator: '@HybridId\HybridIdGenerator'
            $prefix: null

    HybridId\HybridIdGenerator:
        arguments:
            $profile: '%env(HYBRID_ID_PROFILE)%'
            $node: '%env(HYBRID_ID_NODE)%'
```

Column Sizing
-------------

[](#column-sizing)

The default column length is 29 (standard profile + max 8-char prefix + underscore). Adjust based on your profile:

ProfileNo prefixWith prefix (max 8)`compact``length: 16``length: 25``standard``length: 20``length: 29``extended``length: 24``length: 33`Use `ascii_bin` collation on MySQL/MariaDB. See [core docs](https://github.com/alesitom/hybridId_package#collation-important-for-mysqlmariadb).

Components
----------

[](#components)

### HybridIdType

[](#hybrididtype)

DBAL type that maps `hybrid_id` columns to PHP strings. Handles NULL values transparently.

### HybridIdGenerator

[](#hybrididgenerator)

ORM ID generator implementing `AbstractIdGenerator`. Produces HybridIds on entity persist. Supports:

- Default configuration (standard profile, auto-detected node)
- Custom core generator via constructor injection
- Per-entity prefixes via static `hybridIdPrefix()` method
- Global prefix via constructor parameter

Requirements
------------

[](#requirements)

- PHP 8.3, 8.4, or 8.5
- Doctrine DBAL ^4.0
- Doctrine ORM ^3.0
- [alesitom/hybrid-id](https://github.com/alesitom/hybridId_package) ^4.1 (installed automatically)

License
-------

[](#license)

MIT

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance82

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 91.7% 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 ~0 days

Total

4

Last Release

89d ago

Major Versions

v1.0.1 → v2.0.02026-02-17

### Community

Maintainers

![](https://www.gravatar.com/avatar/027a2a89c88ec6e75a1acd67c7149eb5828555771423544a686adca49bf817d1?d=identicon)[CheerfulBox8976](/maintainers/CheerfulBox8976)

---

Top Contributors

[![alesitom](https://avatars.githubusercontent.com/u/22220729?v=4)](https://github.com/alesitom "alesitom (11 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

ormdoctrinedbalunique-iduuid-alternativetime-sortablehybrid-id

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/alesitom-hybrid-id-doctrine/health.svg)

```
[![Health](https://phpackages.com/badges/alesitom-hybrid-id-doctrine/health.svg)](https://phpackages.com/packages/alesitom-hybrid-id-doctrine)
```

###  Alternatives

[scienta/doctrine-json-functions

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

58723.9M36](/packages/scienta-doctrine-json-functions)[laravel-doctrine/orm

An integration library for Laravel and Doctrine ORM

8425.3M87](/packages/laravel-doctrine-orm)[vlucas/spot2

Simple DataMapper built on top of Doctrine DBAL

605392.8k7](/packages/vlucas-spot2)[kdyby/doctrine

Doctrine integration into Nette Framework

1091.0M86](/packages/kdyby-doctrine)[jsor/doctrine-postgis

Spatial and Geographic Data with PostGIS and Doctrine.

2191.6M1](/packages/jsor-doctrine-postgis)[williarin/wordpress-interop

Interoperability library to work with WordPress database in third party apps

6610.9k2](/packages/williarin-wordpress-interop)

PHPackages © 2026

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