搜索

首页  >  问答  >  正文

如何在多个实体中使用相同的实体字段?

在许多实体中拥有相同实体字段的最佳方式是什么? 例如,“相关实体”将出现在 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粉674999420P粉674999420488 天前490

全部回复(1)我来回复

  • P粉215292716

    P粉2152927162023-09-12 17:26:55

    您有几个选择,您可以使用特征 或使用抽象类。就像 @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
    {
    }
    

    回复
    0
  • 取消回复