如何在与Doctrine 2的manyToMany关联中多次添加相同的实体?

时间:2014-10-21 17:39:54

标签: php symfony doctrine-orm doctrine

在我的徽章实体中,我有这个多人协会:

<?php

class Badges
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false, unique=true)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;


    /**
     * Unidirectional - Many users have Many new Matches (OWNING SIDE)
     *
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="Entity\Event", cascade={"persist"})
     */
    private $match;
}

该活动将其与此徽章相关联。许多徽章可以有很多事件。没关系。

现在我的问题是徽章可以有多次同一事件。和教义2不喜欢这样,并抛出一个错误。类似于&#34;这种关系(Badge_id - Event_id)已经存在。

我该如何解决?

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以为您的关系添加另一个属性count,该属性将存储重复对的数量。如果记录已经存在,您只需增加计数而不是尝试插入新行。

要在Doctrine中定义与属性的关系,您需要在BadgeEvent实体之间的中间定义实体:

  +---------+          +---------+   
  |         |          |         |   
  |  Badge  |          |  Event  |   
  |         |          |         |   
  +--+------+          +------+--+   
     1                        1      
     |                        |      
     |   +---------------+    |      
     |   |               |    |      
     +-N-+  Badge_Event  +-N--+      
         |               |           
         +---------------+         

在Badge_Event实体中,您可以定义新属性count