Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Hubungan Ramai-ke-Ramai dengan Bidang Tambahan dalam Ajaran 2?

Bagaimana untuk Melaksanakan Hubungan Ramai-ke-Ramai dengan Bidang Tambahan dalam Ajaran 2?

DDD
Lepaskan: 2024-11-30 07:57:12
asal
368 orang telah melayarinya

How to Implement a Many-to-Many Relationship with an Extra Field in Doctrine 2?

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:

    • Memegang maklumat produk, termasuk nama dan stok inventori.
  • Kedai:

    • Serupa dengan Produk tetapi menyimpan maklumat dan stok kedai inventori.
  • Stok:

    • Mewakili hubungan antara Produk dan Kedai, termasuk medan "jumlah".

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;
}
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan