澄清查询
在最初的问题,用户寻求有关在包含附加字段(库存)的链接表中创建多对多关系的指导 数量)。使用 Doctrine 访问库存量值并生成数据库表结构时出现了挑战。
解决问题
问题源于多对多的假设-许多具有附加值的关系都可以这样对待。但是,具有附加值的多对多关系将成为具有标识符和值的新实体。
解决方案
解决方案涉及创建一个名为 Stock 的单独实体包含以下列:
这允许系统准确地建模多对多关系,从而使用 Doctrine 提供对库存金额值的访问。 🎜>
更新的实体
以下是调整后的实体定义:产品:
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; }
Sto回复:
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\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; }
数据库结构
此更改导致数据库结构如下所示:以上是教义2中如何处理带有额外字段的多对多关系?的详细内容。更多信息请关注PHP中文网其他相关文章!