为多个实体之一创建实体属性
Creating an entity attribute to one of multiple Entities
所以我有以下名为 Link
的实体,它具有以下属性:
id
source
target
type
其中每个源和目标都可以 link 到以下实体之一:Project
或 Task
。但这是不可能的,因为一个属性只能引用一个实体。
我该如何解决这个问题?我是否必须为每种类型创建一个实体,例如
- LinkProjectTask
- LinkTaskProject
- 链接项目项目
- LinkTaskTask
这看起来一团糟,表明应用程序结构没有经过深思熟虑。
Project
和Task
是用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;
}
}
希望对您有所帮助:)
所以我有以下名为 Link
的实体,它具有以下属性:
id
source
target
type
其中每个源和目标都可以 link 到以下实体之一:Project
或 Task
。但这是不可能的,因为一个属性只能引用一个实体。
我该如何解决这个问题?我是否必须为每种类型创建一个实体,例如
- LinkProjectTask
- LinkTaskProject
- 链接项目项目
- LinkTaskTask
这看起来一团糟,表明应用程序结构没有经过深思熟虑。
Project
和Task
是用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;
}
}
希望对您有所帮助:)