实体设置
学说 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中文网其他相关文章!