繁体   English   中英

Doctrine ManyToMany 单向,具有共享属性。 Symfony 3.4

[英]Doctrine ManyToMany Unidirectional with shared attribute. Symfony 3.4

我有 2 个实体:Objetct 和 Product,每个表中都有一个额外的 ID:officeId 这个 id 在每个表中(我无法修改数据库)和 3 个表:

  • Object
  • 产品
  • 对象产品

我想要一个 manyTomany 单向关系。

实体 Object:

class Object
{

    /**
     * @var Products[]|ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Products")
     * @ORM\JoinTable(name="ObjectProduct",
     *      joinColumns={@ORM\JoinColumn(name="objectId", referencedColumnName="id"),
     *                   @ORM\JoinColumn(name="officeId", referencedColumnName="officeId")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="productId", referencedColumnName="id"),
     *                   @ORM\JoinColumn(name="officeId", referencedColumnName="officeId")}
     *      )
     *
     */
    private $products;
}

我的问题是尝试插入时,插入 officeId 属性两次:例如:INSERT INTO ObjectProduct (objectId, officeId, productId, officeId) VALUES (?, ?, ?, ?)

当您使用多对多关系(单向或双向)时,它会创建一个连接表。 你似乎知道这部分。

此连接表包含表示复合主键的两个外键(以确保唯一性)。 这是自动的

如果您希望更改任何内容(广告额外的 ID、额外的列...),那么您需要将 map 作为项目内部的实体并定义一对多关系而不是多对多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM