Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Doctrine 2 và bảng liên kết Nhiều đến nhiều với một trường bổ sung

Liên kết Nhiều-Nhiều với các giá trị bổ sung không phải là Nhiều-Nhiều, nhưng thực sự là một thực thể mới, vì nó hiện có một số nhận dạng (hai quan hệ với các thực thể được kết nối) và các giá trị.

Đó cũng là lý do tại sao liên kết Nhiều-Nhiều rất hiếm:bạn có xu hướng lưu trữ các thuộc tính bổ sung trong chúng, chẳng hạn như sorting , amount , v.v.

Những gì bạn có thể cần là một cái gì đó như sau (Tôi đã tạo cả hai quan hệ hai chiều, hãy cân nhắc việc đặt ít nhất một trong số chúng là đơn hướng):

Sản phẩm:

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

Cửa hàng:

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

Cổ phiếu:

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. MySQL - buộc không sử dụng bộ đệm để kiểm tra tốc độ truy vấn

  2. Cách thay đổi giây thành giá trị thời gian trong MySQL

  3. MySQL - MariaDB - Viết thủ tục được lưu trữ đầu tiên

  4. mysql như tăng hiệu suất

  5. Cách sao chép cơ sở dữ liệu MySQL sang máy chủ khác