Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Doctrine 2 dan tabel tautan Banyak-ke-banyak dengan bidang tambahan

Asosiasi Banyak-Ke-Banyak dengan nilai tambahan bukanlah Banyak-Ke-Banyak, tetapi memang entitas baru, karena sekarang memiliki pengidentifikasi (dua hubungan dengan entitas yang terhubung) dan nilai.

Itu juga alasan mengapa asosiasi Many-To-Many sangat jarang:Anda cenderung menyimpan properti tambahan di dalamnya, seperti sorting , amount , dll.

Apa yang mungkin Anda butuhkan adalah sesuatu seperti mengikuti (saya membuat kedua hubungan dua arah, pertimbangkan untuk membuat setidaknya satu dari mereka searah):

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;
}

Toko:

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;
}

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;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemicu MySQL saya tidak berfungsi, sintaks sederhana, tidak rumit

  2. Bagaimana cara mendapatkan usia dari bidang D.O.B di MySQL?

  3. BIN() – Dapatkan Nilai Biner Angka di MySQL

  4. Bagaimana cara menghapus dari pilih di MySQL?

  5. Apa perbedaan praktis antara `REPLACE` dan `INSERT ... ON DUPLICATE KEY UPDATE` di MySQL?