使用Symfony更新与Doctrine中的manytomany相关的集合

时间:2018-03-07 15:16:34

标签: php symfony doctrine-orm

我有2个与ManyToMany相关的实体:Routage和Contact。

实体行程:

/**
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Bdd\Contact", inversedBy="routages", cascade={"persist"})
 * @ORM\JoinTable(name="routages_contacts")
 */
private $contacts;

实体联系:

/**
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Routage\Routage", mappedBy="contacts")
 */
private $routages;

但是当我在他的Collection中为一个Routage添加一些Contact时,它会创建X个查询。 但我想限制查询次数。

这是我的控制器部分:

foreach($Abonnes as $Contact){
    $Routage->addContact($Contact);
    $this->getDoctrine()->getManager()->persist($Routage);
}
$this->getDoctrine()->getManager()->flush();

1 个答案:

答案 0 :(得分:0)

$this->getDoctrine()->getManager()->persist($Routage);

应该不在foreach循环中,因此您的代码应该如下所示:

foreach($Abonnes as $Contact){
    $Routage->addContact($Contact);

}
$this->getDoctrine()->getManager()->persist($Routage);
$this->getDoctrine()->getManager()->flush();