Bagaimana Mengendalikan Perhubungan Banyak-ke-Banyak dengan Medan Tambahan Menggunakan Jadual Pautan Doktrin 2?

DDD
Lepaskan: 2024-10-25 01:53:02
asal
111 orang telah melayarinya

How to Handle Many-to-Many Relationships with Extra Fields Using Doctrine 2's Link Table?

Doktrin 2 dan Jadual Pautan Many-to-many dengan Medan Tambahan

Isu ini timbul apabila cuba mencipta model pangkalan data dengan perhubungan banyak-ke-banyak yang memerlukan medan tambahan dalam jadual pautan. Khususnya, jadual penyimpanan stok diperlukan.

Untuk menyelesaikan masalah ini, adalah penting untuk memahami bahawa perkaitan sebegitu bukanlah perhubungan Ramai-Ke-Ramai tetapi sebaliknya entiti baharu, kerana ia kini mempunyai pengecam (hubungan dengan entiti yang disambungkan) dan nilai tambahan.

Model pangkalan data harus distruktur semula seperti berikut:

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\Column(name="product_name", type="string", length=50, nullable=false) */
    protected $name;

    /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */
    protected $stockProducts;
}
Salin selepas log masuk

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\Column(name="store_name", type="string", length=50, nullable=false) */
    protected $name;

    /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */
    protected $stockProducts;
}
Salin selepas log masuk

Stok:

namespace Entity;

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Table(name="stock") @ORM\Entity() */
class Stock
{
    /** ORM\Column(type="integer") */
    protected $amount;

    /** 
     * @ORM\Id()
     * @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") 
     * @ORM\JoinColumn(name="store_id", referencedColumnName="id", nullable=false) 
     */
    protected $store;

    /** 
     * @ORM\Id()
     * @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") 
     * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) 
     */
    protected $product;
}
Salin selepas log masuk

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

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!