Jadual Pautan Many-to-Many dengan Medan Tambahan dalam Doktrin 2
Pengenalan
Pemodelan pangkalan data selalunya melibatkan penciptaan perhubungan banyak-ke-banyak. Dalam kes di mana maklumat tambahan perlu disimpan untuk setiap perhubungan, jadual banyak-ke-banyak tradisional menjadi tidak mencukupi. Artikel ini meneroka mencipta perhubungan sedemikian menggunakan Doktrin 2, dengan medan tambahan ditambahkan pada jadual pautan.
Cabaran
Pada mulanya, cuba mencipta perhubungan banyak-ke-banyak dengan medan tambahan menghasilkan jadual pautan tanpa nilai yang dikehendaki. Percubaan seterusnya untuk menstruktur semula reka letak pangkalan data untuk memasukkan jadual "Stok" yang berasingan dengan perhubungan dengan entiti "Produk" dan "Kedai" juga terbukti tidak berjaya.
Penyelesaian
Kunci untuk menyelesaikan isu ini terletak pada pemahaman bahawa perkaitan banyak-ke-banyak dengan nilai tambahan menjadi entiti yang berbeza. Dalam konteks contoh ini, jadual "Stok" dengan medan "jumlah"nya mewakili entiti berasingan yang bukan lagi hubungan banyak-ke-banyak tulen.
Model Entiti
Berdasarkan pemahaman ini, model entiti berikut ialah dicadangkan:
Produk:
Kedai:
Stok:
Pemetaan dengan Doktrin 2
Pemetaan Doktrin 2 yang sepadan untuk entiti akan kelihatan seperti ini:
// Product.php class Product { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; } // Store.php class Store { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; } // Stock.php class Stock { /** @ORM\Column(type="integer") */ protected $amount; /** @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") */ protected $store; /** @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") */ protected $product; }
Dengan mengikuti pendekatan ini, anda boleh mencipta hubungan pangkalan data yang kompleks dengan medan tambahan menggunakan Doktrin 2, memberikan fleksibiliti yang lebih besar dalam pemodelan data.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Hubungan Ramai-ke-Ramai dengan Bidang Tambahan dalam Ajaran 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!