Bagaimana untuk menggunakan medan entiti yang sama dalam berbilang entiti?
P粉674999420
P粉674999420 2023-09-11 22:06:11
0
1
457

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粉674999420
P粉674999420

membalas semua(1)
P粉215292716

Anda mempunyai beberapa pilihan, anda boleh menggunakan sifat a> 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
{
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan