首頁  >  問答  >  主體

如何在多個實體中使用相同的實體欄位?

在許多實體中擁有相同實體欄位的最佳方式是什麼? 例如,「相關實體」將出現在 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粉674999420404 天前426

全部回覆(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
  • 取消回覆