Rumah >pangkalan data >tutorial mysql >Bagaimana Menguruskan Perhubungan Banyak-ke-Banyak dengan Medan Tambahan dalam Doktrin 2?
Doktrin 2: Menguruskan Jadual Pautan Banyak-ke-Banyak dengan Medan Tambahan
Dalam Ajaran 2, memodelkan perhubungan banyak-ke-banyak selalunya melibatkan penciptaan jadual pautan untuk mewakili hubungan antara entiti. Walau bagaimanapun, senario mungkin timbul di mana anda perlu menyimpan maklumat tambahan dalam jadual pautan itu sendiri. Ini menimbulkan persoalan tentang cara mengakses dan mengurus nilai medan tambahan ini menggunakan Doktrin.
Perangkap Persatuan Ramai-ke-Banyak
Secara tradisinya, ramai-ke- banyak perhubungan tidak dianggap sebagai entiti. Ini kerana ia biasanya berfungsi sebagai penyambung tanpa memegang sebarang sifat tersendiri. Walau bagaimanapun, apabila anda memperkenalkan medan tambahan seperti "jumlah stok", jadual pautan menjadi entiti dengan identiti dan nilainya sendiri.
Entiti Doktrin untuk Pengurusan Stok Berbilang Kedai, Berbilang Produk
Untuk menangani senario khusus anda, anda perlu mencipta tiga entiti: Produk, Kedai dan Stok. Entiti Saham direka bentuk untuk menangkap perhubungan antara produk dan kedai, bersama-sama dengan jumlah stok dalam setiap kes.
Mentakrifkan Perhubungan
Gunakan anotasi ORM Doktrin untuk mewujudkan hubungan antara entiti. Persatuan satu-ke-banyak harus dipetakan menggunakan @OneToMany, manakala persatuan banyak-ke-banyak memerlukan anotasi @ManyToMany. Ambil perhatian bahawa anotasi @Id dan @Column mentakrifkan medan kunci utama dan entiti, masing-masing.
Medan Tambahan dalam Jadual Pautan
Dalam entiti Saham, anda mesti menentukan medan amaun sebagai harta dengan anotasi @Column yang sepadan. Medan tambahan ini akan disimpan dalam jadual pautan.
Contoh Definisi Entiti
Di bawah ialah contoh definisi entiti untuk Produk, Kedai dan Stok yang termasuk yang diperlukan anotasi:
Produk:
namespace Entity; use Doctrine\ORM\Mapping as ORM; /** @ORM\Table(name="product") @ORM\Entity() */ class Product { /** @ORM\Id() @ORM\Column(type="integer") */ protected $id; /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; }
Kedai:
namespace Entity; use Doctrine\ORM\Mapping as ORM; /** @ORM\Table(name="store") @ORM\Entity() */ class Store { /** @ORM\Id() @ORM\Column(type="integer") */ protected $id; /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; }
Stok:
namespace Entity; use Doctrine\ORM\Mapping as ORM; /** @ORM\Table(name="stock") @ORM\Entity() */ class Stock { /** @ORM\Column(type="integer") */ protected $amount; /** @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") @ORM\JoinColumn(name="store_id", referencedColumnName="id", nullable=false) */ protected $store; /** @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) */ protected $product; }
Mengatasi Biasa Ralat
Jika anda menghadapi ralat semasa melaksanakan arahan penciptaan skema, seperti medan yang tiada atau reka letak jadual yang salah, pastikan entiti anda diberi anotasi dengan betul. Selain itu, pastikan anda telah menentukan semua lajur dan perhubungan yang diperlukan dalam skema pangkalan data.
Dengan mengikuti garis panduan ini, anda boleh berjaya mengurus jadual pautan banyak-ke-banyak dengan medan tambahan menggunakan Doktrin 2. Pendekatan ini membolehkan anda untuk menyimpan maklumat tambahan dalam perhubungan itu sendiri, memberikan lebih fleksibiliti dalam model pangkalan data anda.
Atas ialah kandungan terperinci Bagaimana Menguruskan Perhubungan Banyak-ke-Banyak dengan Medan Tambahan dalam Doktrin 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!