maduser/argon-doctrine

Doctrine ORM integration for the Argon runtime stack.

Maintainers

Package info

github.com/judus/argon-doctrine

pkg:composer/maduser/argon-doctrine

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-05-25 16:07 UTC

This package is auto-updated.

Last update: 2026-05-25 16:20:01 UTC


README

PHP Build codecov Psalm Level Latest Version Total Downloads License: MIT

Doctrine ORM integration for the Argon runtime stack.

Installation

composer require maduser/argon-doctrine

Registration

Register the service provider in your application composition layer:

use Maduser\Argon\Doctrine\Provider\DoctrineServiceProvider;

$container->register(DoctrineServiceProvider::class);

The provider registers:

  • Doctrine\ORM\EntityManagerInterface
  • Maduser\Argon\Doctrine\DoctrineEntityManagerRegistry
  • Maduser\Argon\Doctrine\DoctrineEntityManagerDefinitionRegistry
  • Maduser\Argon\Doctrine\Config\DoctrineConfig

Existing container definitions are not replaced.

Entity Managers

Add entity manager definitions during service-provider registration:

use Maduser\Argon\Container\AbstractServiceProvider;
use Maduser\Argon\Container\ArgonContainer;
use Maduser\Argon\Doctrine\DoctrineEntityManagerDefinitionRegistry;

final class DoctrineMappingServiceProvider extends AbstractServiceProvider
{
    #[\Override]
    public function register(ArgonContainer $container): void
    {
        $registry = $container->get(DoctrineEntityManagerDefinitionRegistry::class);

        $registry->add(
            name: 'default',
            connectionParams: [
                'driver' => 'pdo_sqlite',
                'path' => dirname(__DIR__) . '/storage/database.sqlite',
            ],
            mappingPaths: [
                dirname(__DIR__) . '/src',
            ],
        );

        $registry->add(
            name: 'analytics',
            connectionParams: [
                'driver' => 'pdo_mysql',
                'host' => '127.0.0.1',
                'dbname' => 'analytics',
                'user' => 'app',
                'password' => '',
                'charset' => 'utf8mb4',
            ],
            mappingPaths: [
                dirname(__DIR__) . '/src/Analytics',
            ],
            devMode: false,
            cacheNamespaceSeed: 'analytics',
            proxyDir: dirname(__DIR__) . '/storage/cache/doctrine/proxies',
        );
    }
}

The default manager name is default. Configure another default explicitly:

use Maduser\Argon\Doctrine\Config\DoctrineParameter;

$container->getParameters()->set(DoctrineParameter::DEFAULT_MANAGER, 'analytics');

Usage

Inject Doctrine's default entity manager:

use Doctrine\ORM\EntityManagerInterface;

final readonly class UserRepository
{
    public function __construct(
        private EntityManagerInterface $manager,
    ) {
    }
}

For multiple managers, inject the registry:

use Maduser\Argon\Doctrine\DoctrineEntityManagerRegistry;

$default = $registry->get();
$analytics = $registry->get('analytics');

Managers are created lazily when first resolved. Register manager definitions before resolving EntityManagerInterface or calling $registry->get().

Mapping

This package configures Doctrine ORM attribute metadata through ORMSetup::createAttributeMetadataConfig(). It does not configure XML, YAML, annotation drivers, or automatic mapping discovery.

Boundaries

This package only wires Doctrine ORM into Argon. It does not provide migrations, fixtures, repositories, DBAL-only abstractions, entity discovery, config-file loading, or transaction helpers.

Quality Gates

composer check
composer test:coverage
composer psalm
composer phpcs