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;
Pertimbangan Tambahan:
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!