Heim  >  Fragen und Antworten  >  Hauptteil

Wie verwende ich dasselbe Entitätsfeld in mehreren Entitäten?

Was ist der beste Weg, um in vielen Entitäten die gleichen Entitätsfelder zu haben? „Verwandte Entitäten“ werden beispielsweise in 8 Tabellen angezeigt.

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

RelatedEntity in „Benutzer“ ist wie ein übergeordnetes Feld für andere. Gibt es eine Möglichkeit, sie einander zuzuordnen, um die Abfrage zu vereinfachen?

Ich habe OneToOne ausprobiert, aber jedes Mal werden neue Benutzer hinzugefügt, aber das muss ich nicht tun.

P粉674999420P粉674999420404 Tage vor424

Antworte allen(1)Ich werde antworten

  • 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
    {
    }
    

    Antwort
    0
  • StornierenAntwort