實體設定
學說2 解釋了多重多當包含附加屬性時,多對多關係作為一個實體,成為具有自己唯一識別碼的單獨實體。這對於追蹤與每個關係關聯的值至關重要。
要在數據庫中實現此功能,請考慮以下實體結構:
產品:
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; }
商店:
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; }
庫存:
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; }
此設定建立了三個實體:產品、商店和庫存。 Stock 實體包含 amount 欄位作為附加屬性,使其與值形成多對多關係。
以上是如何在原則2中實現額外欄位的多對多關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!