我想在 Symfony 4 中通过一个特征使用继承来向 2 个不同的表添加一个新列。
这是我想要的那两张表的结构:
ManagerChildA与 ChildClass 有关系 OneToManyManagerChildB与 ChildClass 有关系 OneToManyChildClass是一个基本实体
这就是我尝试过的: Class ManagerChildAand ManagerChildBare the same except the name
/**
* @ORM\Entity(repositoryClass="App\Repository\ManagerChildARepository")
*/
class ManagerChildA
{
use TraitManagerChild;
...
}
/**
* @ORM\Entity(repositoryClass="App\Repository\ManagerChildBRepository")
*/
class ManagerChildB
{
use TraitManagerChild;
...
}
这是我与关系的特点:
trait TraitManagerChild
{
/**
* @ORM\OneToMany(targetEntity="App\Entity\ChildClass", mappedBy="managerChildA|managerChildB", orphanRemoval=true)
*/
private $child;
public function __construct()
{
$this->child = new ArrayCollection();
}
...
}
这是子实体:
/**
* @ORM\Entity(repositoryClass="App\Repository\ChildClassRepository")
*/
class ChildClass
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\ManagerChildA|App\Entity\ManagerChildB", inversedBy="child")
* @ORM\JoinColumn(nullable=false)
*/
private $managerChild;
...
}
最简单的方法是什么?
编辑:
问题是我无法生成迁移,因为我不知道如何使用一个代码在 2 个实体中添加关系。问题在评论中:targetEntity在特质中
这就是我想要的 OneToMany 关系(经理可以有很多孩子),但通过一个特征:

我的英语说得不太好抱歉:/