所以我有一个名为Link
的实体,它具有以下属性:
id
source
target
type
其中源和目标都可以链接到以下实体之一:Project
或Task
。但这是不可能的,因为一个属性只能引用一个实体。
我该如何解决这个问题?我是否必须为每种类型创建一个实体,例如
这似乎是一团糟,表明应用程序结构没有经过深思熟虑。
答案 0 :(得分:1)
Project
和Task
是否由类表示?
您可能拥有两个实体都继承自的基类,并使用该基类来定义您的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;
}
}
希望这会有所帮助:)