fabiang/doctrine-dynamic

通过配置动态加载实体映射

v2.0.0 2022-05-13 11:10 UTC

This package is auto-updated.

Last update: 2024-09-13 16:11:00 UTC


README

Doctrine 的代理驱动,允许您通过配置动态地添加自定义关系。

如果您使用的是无法更改的外部实体,但又想在它们之间以及与您的实体之间添加自己的关系,这将非常有用。

Latest Stable Version License
Unit Tests Integration Tests Static Code Analysis Scrutinizer Code Quality Code Coverage

功能

  • 为实体设置所有可能的关联
    • 一对一
    • 多对一
    • 一对多
    • 多对多
  • 设置仓库类

安装

初识 Composer?请阅读介绍。运行以下 Composer 命令

$ composer require fabiang/doctrine-dynamic

框架集成

使用方法

<?php

use Fabiang\DoctrineDynamic\ConfigurationFactory;
use Fabiang\DoctrineDynamic\ProxyDriverFactory;
use Doctrine\ORM\EntityManager;

$configurationFactory = new ConfigurationFactory();
$configuration = $configurationFactory->factory([
    \Mymodule\Entity\Customer::class => [
        'options' => [
            'repository' => \Mymodule\Repository\CustomerRepository::class,
        ],
        'fields' => [
            'fieldname' => [
                'products' => [
                    'oneToMany' => [
                        [
                            'targetEntity' => \Mymodule\Entity\Customer::class,
                            'mappedBy'     => 'customer',
                        ],
                    ]
                ],
            ]
        ]
    ],
    \Mymodule\Entity\Products::class => [
        'fields' => [
            'customer' => [
                'manyToOne' => [
                    [
                        'targetEntity' => \Mymodule\Entity\Products::class,
                        'inversedBy'   => 'products',
                        'joinColumns'  => [
                            'name'                 => 'customer_id',
                            'referencedColumnName' => 'id'
                        ]
                    ],
                ]
            ],
        ]
    ],
]);

/** @var $entityManager EntityManager */
// get it from a container for example
$entityManager = $container->get(EntityManager::class);

$proxyDriverFactory = new ProxyDriverFactory();
$proxyDriverFactory->factory($entityManager, $configuration);

开发

此库经过 PHPUnitBehat 测试。

在 Github 上fork 项目,并提交包含您更改的 pull request。确保您在运行以下命令后没有破坏任何内容

composer install
./vendor/bin/phpunit
./vendor/bin/behat

许可

BSD-2-Clause 许可。请参阅LICENSE.md