Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memodelkan Perhubungan Banyak-ke-Banyak dengan Medan Tambahan dalam Doktrin 2?

Bagaimana untuk Memodelkan Perhubungan Banyak-ke-Banyak dengan Medan Tambahan dalam Doktrin 2?

Linda Hamilton
Lepaskan: 2024-11-25 11:57:14
asal
205 orang telah melayarinya

How to Model Many-to-Many Relationships with Extra Fields in Doctrine 2?

Jadual Pautan Banyak-ke-Banyak dengan Medan Tambahan: Penjelasan Mendalam

Pengenalan:

Banyak -kepada-banyak perhubungan selalunya melibatkan medan tambahan yang memberikan maklumat tambahan khusus untuk setiap kejadian perhubungan. Walau bagaimanapun, pengendalian hubungan sedemikian dalam Doktrin 2 boleh menjadi agak rumit. Artikel ini bertujuan untuk menjelaskan cara memodelkan perhubungan ini dengan berkesan.

Masalahnya:

Pengguna cuba mencipta model pangkalan data dengan perhubungan banyak-ke-banyak yang termasuk medan tambahan untuk penyimpanan stok. Walau bagaimanapun, mereka menghadapi masalah apabila cuba mengakses nilai jumlah stok dan menjana jadual pangkalan data menggunakan alat skema Doctrine.

Penyelesaian:

Memahami Banyak -kepada-Banyak Hubungan dengan Medan Tambahan

Hubungan ramai-ke-banyak dengan medan tambahan pada dasarnya adalah entiti baharu itu sendiri, kerana ia kini mempunyai pengecam (hubungan dengan entiti yang disambungkan) dan nilai. Oleh itu, adalah tidak mencukupi untuk memodelkannya sebagai jadual pautan tanpa nilai.

Mencipta Entiti Berasingan untuk Perhubungan dengan Medan Tambahan

Pendekatan yang disyorkan adalah untuk mencipta entiti yang berasingan , seperti "Stok" dalam kes ini, yang mewakili perhubungan dan termasuk medan tambahan. Entiti ini mewujudkan perhubungan dengan kedua-dua entiti yang terlibat dan setiap perhubungan diwakili oleh kunci asing dalam entiti "Stok".

Contoh Kod:

Berikut ialah contoh bagaimana entiti boleh ditakrifkan dalam Ajaran 2 anotasi:

// Product Entity
@ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product")
protected $stockProducts;

// Store Entity
@ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store")
protected $stockProducts;

// Stock Entity
@ORM\Id()
@ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts")
protected $store;

@ORM\Id()
@ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts")
protected $product;
Salin selepas log masuk

Pertimbangan Tambahan:

  • Pertimbangkan untuk menjadikan salah satu perhubungan satu arah untuk mengelakkan pertanyaan rujukan sendiri (lalai ialah dua arah).
  • Pastikan bahawa skema pangkalan data sepadan dengan objek model.

Atas ialah kandungan terperinci Bagaimana untuk Memodelkan Perhubungan Banyak-ke-Banyak dengan Medan Tambahan dalam Doktrin 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan