Maison  >  Questions et réponses  >  le corps du texte

Comment utiliser le même champ d’entité dans plusieurs entités ?

Quelle est la meilleure façon d'avoir les mêmes champs d'entité dans plusieurs entités ? Par exemple, « Entités associées » apparaîtra dans 8 tableaux.

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

RelatedEntity dans "User" est comme le champ parent pour les autres. Existe-t-il un moyen de les mapper les uns aux autres pour simplifier les requêtes ?

J'ai essayé OneToOne mais à chaque fois, il ajoute de nouveaux utilisateurs mais je n'ai pas besoin de le faire.

P粉674999420P粉674999420404 Il y a quelques jours427

répondre à tous(1)je répondrai

  • P粉215292716

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

    Vous avez quelques options, vous pouvez utiliser traits ou utiliser cours abstraits. Comme @LBA l'a dit dans sa réponse, si vos entités ont beaucoup de points communs et seulement quelques différences, vous voudrez peut-être vous pencher sur la cartographie de l'héritage.

    Exemple de fonctionnalité :

    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;
    }
    

    Exemple de classe abstraite :

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

    répondre
    0
  • Annulerrépondre