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