如何在多个实体中使用相同的实体字段?
P粉674999420
P粉674999420 2023-09-11 22:06:11
0
1
476

在许多实体中拥有相同实体字段的最佳方式是什么? 例如,“相关实体”将出现在 8 个表中。

class User
{
    #[ORM\Column(length: 255)]
        private ?string $relatedEntity = null;
}
class User2
{
    #[ORM\Column(length: 255)]
        private ?string $relatedEntity = null;
}

“User”中的RelatedEntity 就像其他人的父字段。有什么方法可以将它们相互映射以使查询更简单吗?

我尝试过 OneToOne,但每次它都会添加新用户,但我不需要这样做。

P粉674999420
P粉674999420

全部回复(1)
P粉215292716

您有几个选择,您可以使用特征 a> 或使用抽象类。就像 @LBA 在他的回答中所说,如果您的实体有许多共同点并且只有一些差异,您可能需要研究 继承映射

特征示例:

trait RelatedEntityTrait
{
    #[ORM\Column(length: 255)]
    private ?string $relatedEntity = null;

    public function getRelatedEntity(): ?string
    {
        return $this->relatedEntity;
    }

    public function setRelatedEntity(?string $relatedEntity): void
    {
        $this->relatedEntity = $relatedEntity;
    }
}

class User
{
    use RelatedEntityTrait;
}

class User2
{
    use RelatedEntityTrait;
}

抽象类示例:

abstract class BaseUser
{
    #[ORM\Column(length: 255)]
    private ?string $relatedEntity = null;

    public function getRelatedEntity(): ?string
    {
        return $this->relatedEntity;
    }

    public function setRelatedEntity(?string $relatedEntity): void
    {
        $this->relatedEntity = $relatedEntity;
    }
}

class User extends BaseUser
{
}

class User2 extends BaseUser
{
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板