Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menggunakan medan entiti yang sama dalam berbilang entiti?

Apakah cara terbaik untuk mempunyai medan entiti yang sama dalam banyak entiti? Contohnya, "Entiti Berkaitan" akan muncul dalam 8 jadual.

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

RelatedEntity dalam "Pengguna" adalah seperti medan induk untuk orang lain. Adakah terdapat apa-apa cara untuk memetakan mereka antara satu sama lain untuk membuat pertanyaan lebih mudah?

Saya mencuba OneToOne tetapi setiap kali ia menambah pengguna baharu tetapi saya tidak perlu berbuat demikian.

P粉674999420P粉674999420404 hari yang lalu428

membalas semua(1)saya akan balas

  • P粉215292716

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

    Anda mempunyai beberapa pilihan, anda boleh menggunakan sifat atau menggunakan kelas abstrak. Seperti yang @LBA katakan dalam jawapannya, jika entiti anda mempunyai banyak persamaan dan hanya sedikit perbezaan, anda mungkin ingin melihat pemetaan warisan.

    Contoh ciri:

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

    Contoh kelas abstrak:

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

    balas
    0
  • Batalbalas