定制 68publishers/doctrine-bridge 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

68publishers/doctrine-bridge

最新稳定版本:v1.1.0

Composer 安装命令:

composer require 68publishers/doctrine-bridge

包简介

Bridges between integrations of Doctrine ORM and '68publishers bundles.

README 文档

README

Register custom DBAL types, entity mappings, target entities and migration directories directly inside your CompilerExtensions!

Checks Coverage Status Total Downloads Latest Version PHP Version

Installation

The best way to install 68publishers/doctrine-bridge is using Composer:

$ composer require 68publishers/doctrine-bridge

Configuration

extensions: 68publishers.doctrine_bridge: SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DoctrineBridgeExtension # The default configuration: 68publishers.doctrine_bridge: database_types_enabled: yes # Enables/disables registration of acustom DBAL types entity_mappings_enabled: yes # Enables/disables registration of entity mappings target_entities_enabled: yes # Enables/disables resolving of target entities migration_directories_enabled: yes # Enables/disables registration of migrations for doctrine/migrations # Dependent services. Allowed are classname strings (for autowired services) or references e.g. @myService services: dbal_connection: Doctrine\DBAL\Connection drivers: # For drivers, you can use `false`. In this case, mappings for the drive will be omitted chain: Doctrine\Persistence\Mapping\Driver\MappingDriverChain annotation: Doctrine\ORM\Mapping\Driver\AnnotationDriver xml: Doctrine\ORM\Mapping\Driver\XmlDriver simplified_xml: Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver attribute: Doctrine\ORM\Mapping\Driver\AttributeDriver migrations_configuration: Doctrine\Migrations\Configuration\Configuration

The package is fully tested in combination with nettrine/orm and nettrine/migrations, however it can be plugged into almost any Doctrine integration into the Nette Framework using the services options.

Usage

Database Type Provider

use Doctrine\DBAL\Types\Types; use Nette\DI\CompilerExtension; use Ramsey\Uuid\Doctrine\UuidBinaryOrderedTimeType; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DatabaseType; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DatabaseTypeProviderInterface; class MyExtension extends CompilerExtension implements DatabaseTypeProviderInterface { public function getDatabaseTypes() : array { return [ new DatabaseType('uuid_binary_ordered_time', Ramsey\Uuid\Doctrine\UuidBinaryOrderedTimeType::class, Types::BINARY), new DatabaseType('my_custom_type', MyCustomType::class), ]; } }

Services in Doctrine Types

Doctrine DBAL types don't have access to services by default. With this extension, you can receive the DI Container in custom types when the Connection is created.

use Nette\DI\Container; use Doctrine\DBAL\Types\StringType; use SixtyEightPublishers\DoctrineBridge\Type\ContainerAwareTypeInterface; final class MyExtension extends StringType implements ContainerAwareTypeInterface { private MyService $service; public function setContainer(Container $container, array $context = []) : void { $this->service = $container->getByType(MyService::class); } }

Registering Doctrine Types via bundled DatabaseTypeProviderExtension

To register custom types, it is not necessary to create a custom extension, but the class DatabaseTypeProviderExtension can be used.

extensions: 68publishers.doctrine_bridge.database_type_provider: SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DatabaseTypeProviderExtension 68publishers.doctrine_bridge.database_type_provider: # inline notation: my_type_1: App\DbalType\MyType1 # structured notation: my_type_2: class: App\DbalType\MyType2 mapping_type: text context: []

Entity Mapping Provider

use Nette\DI\CompilerExtension; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\EntityMapping; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\EntityMappingProviderInterface; class MyExtension extends CompilerExtension implements EntityMappingProviderInterface { public function getEntityMappings() : array { return [ new EntityMapping(EntityMapping::DRIVER_ANNOTATION, 'App\\Entity', __DIR__ . '/../Entity'), new EntityMapping(EntityMapping::DRIVER_ATTRIBUTE, 'App\\Entity', __DIR__ . '/../Entity'), new EntityMapping(EntityMapping::DRIVER_XML, 'App\\Entity', __DIR__ . '/../Mapping/xml'), # or new EntityMapping(EntityMapping::DRIVER_SIMPLIFIED_XML, 'App\\Entity', __DIR__ . '/../Mapping/xml'), ]; } }

Target Entity Provider

use Nette\DI\CompilerExtension; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\TargetEntity; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\TargetEntityProviderInterface; class MyExtension extends CompilerExtension implements TargetEntityProviderInterface { public function getTargetEntities() : array { return [ new TargetEntity(ProductInterface::class, ProductEntity::class), ]; } }

Migration directories

use Nette\DI\CompilerExtension; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\TargetEntity; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\MigrationsDirectoriesProviderInterface; class MyExtension extends CompilerExtension implements MigrationsDirectoriesProviderInterface { public function getMigrationsDirectories() : array { return [ new MigrationsDirectory('App\\Bundle\\MyBundle\\Migrations', __DIR__ . '/../Migrations'), ]; } }

Contributing

Before opening a pull request, please check your changes using the following commands

$ make init # to pull and start all docker images $ make cs.check $ make stan $ make tests.all

统计信息

  • 总下载量: 2.54k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 5
  • 推荐数: 1

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固