【问题标题】:Doctrine ManyToMany Unidirectional with shared attribute. Symfony 3.4具有共享属性的多对多单向原则。 Symfony 3.4
【发布时间】:2022-01-18 11:12:20
【问题描述】:

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

  • 对象
  • 产品
  • 对象产品

我想要一个 manyTomany 单向关系。

实体对象:

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 属性: 喜欢: 插入到 ObjectProduct(objectId、officeId、productId、officeId)值(?、?、?、?)

【问题讨论】:

    标签: php symfony doctrine relationship


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多