miklosfarkas/dynamic-discriminator-map-bundle

DCSDynamicDiscriminatorMapBundle 简化了在 Symfony2 中使用 Doctrine 单表继承映射策略。

v1.0.3 2021-09-10 11:53 UTC

This package is auto-updated.

Last update: 2024-09-10 12:49:13 UTC


README

DynamicDiscriminatorMapBundle 简化了在 Symfony 5.3 中使用 Doctrine 单表和类表继承映射策略。

使用此包,您可以通过配置文件动态地将一个类层次结构中的所有类添加到 DiscriminatorMap 的选项中。这样,您可以应用“解耦”方法。

安装

步骤 1:使用 composer 下载 DynamicDiscriminatorMapBundle

在您的 composer.json 中添加 DynamicDiscriminatorMapBundle

{
	"require": {
    	"miklosfarkas/dynamic-discriminator-map-bundle": "dev-master"
	}
}

步骤 2:启用包

在 kernel 中启用包

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
    	// ...
    	new DCS\DynamicDiscriminatorMapBundle\DCSDynamicDiscriminatorMapBundle(),
	);
}

配置

父类

这是一个父类的示例

<?php
namespace Acme\PersonBundle\Entity;

/**
 * @ORM\Entity
 * @ORM\Table(name="person")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"person" = "Person"})
 */
class Person
{
    // ...
}

子类

这是两个子类的示例

<?php
namespace Acme\StudentBundle\Entity;

use Acme\PersonBundle\Entity\Person;

/**
 * @ORM\Entity
 */
class Student extends Person
{
    // ...
}

<?php
namespace Acme\TeacherBundle\Entity;

use Acme\PersonBundle\Entity\Person;

/**
 * @ORM\Entity
 */
class Teacher extends Person
{
    // ...
}

配置文件

# app/config/config.yml
dcs_dynamic_discriminator_map:
    mapping:
        person:
            entity: Acme\PersonBundle\Entity\Person
            map:
                student: Acme\StudentBundle\Entity\Student
                teacher: Acme\TeacherBundle\Entity\Teacher