{"id":21622260,"url":"https://github.com/68publishers/doctrine-bridge","last_synced_at":"2026-05-20T03:12:14.624Z","repository":{"id":41992428,"uuid":"313153396","full_name":"68publishers/doctrine-bridge","owner":"68publishers","description":"🌉 Integrations of Doctrine ORM and '68 Publishers bundles","archived":false,"fork":false,"pushed_at":"2023-08-21T03:24:26.000Z","size":48,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T18:58:06.617Z","etag":null,"topics":["bridge","bundle","doctrine","extension","nette","nette-extension","orm"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/68publishers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-16T00:38:41.000Z","updated_at":"2022-04-19T23:37:57.000Z","dependencies_parsed_at":"2025-03-18T18:51:50.391Z","dependency_job_id":"354179ff-9081-48ab-b607-4c25e7dbb05d","html_url":"https://github.com/68publishers/doctrine-bridge","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/68publishers/doctrine-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/68publishers%2Fdoctrine-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/68publishers%2Fdoctrine-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/68publishers%2Fdoctrine-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/68publishers%2Fdoctrine-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/68publishers","download_url":"https://codeload.github.com/68publishers/doctrine-bridge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/68publishers%2Fdoctrine-bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33244216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T15:49:41.270Z","status":"online","status_checked_at":"2026-05-20T02:00:07.149Z","response_time":356,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bridge","bundle","doctrine","extension","nette","nette-extension","orm"],"created_at":"2024-11-25T00:08:07.384Z","updated_at":"2026-05-20T03:12:14.608Z","avatar_url":"https://github.com/68publishers.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eDoctrine bridge\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eRegister custom DBAL types, entity mappings, target entities and migration directories directly inside your CompilerExtensions!\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/68publishers/doctrine-bridge/actions\"\u003e\u003cimg alt=\"Checks\" src=\"https://badgen.net/github/checks/68publishers/doctrine-bridge/master\"\u003e\u003c/a\u003e\n\u003ca href=\"https://coveralls.io/github/68publishers/doctrine-bridge?branch=master\"\u003e\u003cimg alt=\"Coverage Status\" src=\"https://coveralls.io/repos/github/68publishers/doctrine-bridge/badge.svg?branch=master\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/68publishers/doctrine-bridge\"\u003e\u003cimg alt=\"Total Downloads\" src=\"https://badgen.net/packagist/dt/68publishers/doctrine-bridge\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/68publishers/doctrine-bridge\"\u003e\u003cimg alt=\"Latest Version\" src=\"https://badgen.net/packagist/v/68publishers/doctrine-bridge\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/68publishers/doctrine-bridge\"\u003e\u003cimg alt=\"PHP Version\" src=\"https://badgen.net/packagist/php/68publishers/doctrine-bridge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Installation\n\nThe best way to install 68publishers/doctrine-bridge is using Composer:\n\n```sh\n$ composer require 68publishers/doctrine-bridge\n```\n\n## Configuration\n\n```neon\nextensions:\n    68publishers.doctrine_bridge: SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\DoctrineBridgeExtension\n\n# The default configuration:\n68publishers.doctrine_bridge:\n    database_types_enabled: yes # Enables/disables registration of acustom DBAL types\n    entity_mappings_enabled: yes # Enables/disables registration of entity mappings\n    target_entities_enabled: yes # Enables/disables resolving of target entities\n    migration_directories_enabled: yes # Enables/disables registration of migrations for doctrine/migrations\n\n    # Dependent services. Allowed are classname strings (for autowired services) or references e.g. @myService\n    services:\n        dbal_connection: Doctrine\\DBAL\\Connection\n        drivers:\n            # For drivers, you can use `false`. In this case, mappings for the drive will be omitted\n            chain: Doctrine\\Persistence\\Mapping\\Driver\\MappingDriverChain\n            annotation: Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver\n            xml: Doctrine\\ORM\\Mapping\\Driver\\XmlDriver\n            simplified_xml: Doctrine\\ORM\\Mapping\\Driver\\SimplifiedXmlDriver\n            attribute: Doctrine\\ORM\\Mapping\\Driver\\AttributeDriver\n        migrations_configuration: Doctrine\\Migrations\\Configuration\\Configuration\n```\n\nThe package is fully tested in combination with [nettrine/orm](https://github.com/contributte/doctrine-orm) and [nettrine/migrations](https://github.com/contributte/doctrine-migrations), however it can be plugged into almost any Doctrine integration into the Nette Framework using the `services` options.\n\n## Usage\n\n### Database Type Provider\n\n```php\nuse Doctrine\\DBAL\\Types\\Types;\nuse Nette\\DI\\CompilerExtension;\nuse Ramsey\\Uuid\\Doctrine\\UuidBinaryOrderedTimeType;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\DatabaseType;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\DatabaseTypeProviderInterface;\n\nclass MyExtension extends CompilerExtension implements DatabaseTypeProviderInterface\n{\n    public function getDatabaseTypes() : array\n    {\n        return [\n            new DatabaseType('uuid_binary_ordered_time', Ramsey\\Uuid\\Doctrine\\UuidBinaryOrderedTimeType::class, Types::BINARY),\n            new DatabaseType('my_custom_type', MyCustomType::class),\n        ];\n    }\n}\n```\n\n#### Services in Doctrine Types\n\nDoctrine DBAL types don't have access to services by default. \nWith this extension, you can receive the DI Container in custom types when the Connection is created.\n\n```php\nuse Nette\\DI\\Container;\nuse Doctrine\\DBAL\\Types\\StringType;\nuse SixtyEightPublishers\\DoctrineBridge\\Type\\ContainerAwareTypeInterface;\n\nfinal class MyExtension extends StringType implements ContainerAwareTypeInterface\n{\n    private MyService $service;\n\n    public function setContainer(Container $container, array $context = []) : void\n    {\n        $this-\u003eservice = $container-\u003egetByType(MyService::class);\n    }\n}\n```\n\n#### Registering Doctrine Types via bundled DatabaseTypeProviderExtension\n\nTo register custom types, it is not necessary to create a custom extension, but the class `DatabaseTypeProviderExtension` can be used.\n\n```neon\nextensions:\n    68publishers.doctrine_bridge.database_type_provider: SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\DatabaseTypeProviderExtension\n\n68publishers.doctrine_bridge.database_type_provider:\n    # inline notation:\n    my_type_1: App\\DbalType\\MyType1\n\n    # structured notation:\n    my_type_2:\n        class: App\\DbalType\\MyType2\n        mapping_type: text\n        context: []\n```\n\n### Entity Mapping Provider\n\n```php\nuse Nette\\DI\\CompilerExtension;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\EntityMapping;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\EntityMappingProviderInterface;\n\nclass MyExtension extends CompilerExtension implements EntityMappingProviderInterface\n{\n    public function getEntityMappings() : array\n    {\n        return [\n            new EntityMapping(EntityMapping::DRIVER_ANNOTATION, 'App\\\\Entity', __DIR__ . '/../Entity'),\n            new EntityMapping(EntityMapping::DRIVER_ATTRIBUTE, 'App\\\\Entity', __DIR__ . '/../Entity'),\n            new EntityMapping(EntityMapping::DRIVER_XML, 'App\\\\Entity', __DIR__ . '/../Mapping/xml'),\n            # or\n            new EntityMapping(EntityMapping::DRIVER_SIMPLIFIED_XML, 'App\\\\Entity', __DIR__ . '/../Mapping/xml'),\n        ];\n    }\n}\n```\n\n### Target Entity Provider\n\n```php\nuse Nette\\DI\\CompilerExtension;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\TargetEntity;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\TargetEntityProviderInterface;\n\nclass MyExtension extends CompilerExtension implements TargetEntityProviderInterface\n{\n    public function getTargetEntities() : array\n    {\n        return [\n            new TargetEntity(ProductInterface::class, ProductEntity::class),\n        ];\n    }\n}\n```\n\n### Migration directories\n\n```php\nuse Nette\\DI\\CompilerExtension;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\TargetEntity;\nuse SixtyEightPublishers\\DoctrineBridge\\Bridge\\Nette\\DI\\MigrationsDirectoriesProviderInterface;\n\nclass MyExtension extends CompilerExtension implements MigrationsDirectoriesProviderInterface\n{\n    public function getMigrationsDirectories() : array\n    {\n        return [\n            new MigrationsDirectory('App\\\\Bundle\\\\MyBundle\\\\Migrations', __DIR__ . '/../Migrations'),\n        ];\n    }\n}\n```\n\n## Contributing\n\nBefore opening a pull request, please check your changes using the following commands\n\n```bash\n$ make init # to pull and start all docker images\n\n$ make cs.check\n$ make stan\n$ make tests.all\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F68publishers%2Fdoctrine-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F68publishers%2Fdoctrine-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F68publishers%2Fdoctrine-bridge/lists"}