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

Creating an entity attribute to one of multiple Entities

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

id
source
target
type

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

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

这看起来一团糟,表明应用程序结构没有经过深思熟虑。

ProjectTask是用class表示的吗? 您可以拥有一个基础 class,这两个实体都继承并使用它来定义您的 Link class,文档: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;
    }
}

希望对您有所帮助:)