为多个实体之一创建实体属性

时间:2019-12-05 09:41:13

标签: php symfony orm structure

所以我有一个名为Link的实体,它具有以下属性:

id
source
target
type

其中源和目标都可以链接到以下实体之一:ProjectTask。但这是不可能的,因为一个属性只能引用一个实体。

我该如何解决这个问题?我是否必须为每种类型创建一个实体,例如

  • LinkProjectTask
  • LinkTaskProject
  • LinkProjectProject
  • LinkTaskTask

这似乎是一团糟,表明应用程序结构没有经过深思熟虑。

1 个答案:

答案 0 :(得分:1)

ProjectTask是否由类表示? 您可能拥有两个实体都继承自的基类,并使用该基类来定义您的Link类,文档:https://www.php.net/manual/en/language.oop5.inheritance.php

示例:

class Base
{

}

class Project extends Base
{

}

class Task extends Base 
{
}

class Link
{
   private $source;
   private $target;

    public function getSource(): Base{
        return $this->source;
    }

    public function setSource(Base $source): void {
        $this->source= $source;
    }

    public function getTarget(): Base{
        return $this->target;
    }

    public function setTarget(Base $target): void {
        $this->target= $target;
    }
}

希望这会有所帮助:)