gpt4 book ai didi

Symfony2 删除并保存多对多关系

转载 作者:行者123 更新时间:2023-12-04 02:47:46 25 4
gpt4 key购买 nike

我今天需要你的帮助。我正在使用 Symfony 2.1 开发一个小型应用程序,但我有一个基本问题,我必须使用多对多关系创建第三个表:

class Usuario implements UserInterface {
/**
* @ORM\ManyToMany(targetEntity="Alood\BackBundle\Entity\Alergeno", inversedBy="usuarios")
* @ORM\JoinTable(name="UsuariosProductos",
* joinColumns={@ORM\JoinColumn(name="usuario_user", referencedColumnName="user")},
* inverseJoinColumns={@ORM\JoinColumn(name="alergeno_id", referencedColumnName="id")}
* )
**/
protected $alergenos;
}


public function __construct(){
$this->alergenos = new ArrayCollection();
}

public function getAlergenos() { return $this->alergenos; }

和:
/**
* @ORM\ManyToMany(targetEntity="Alood\BackBundle\Entity\Usuario", mappedBy="alergenos")
**/
protected $usuarios;

然后我需要删除未选中的 Alergenos,这是我的 Controller :
$alergenosUser = $em->getRepository("BackBundle:Usuario")->find($usuario);

$resultSym = array_diff($alergenosUsuarioIds, $alergen);

foreach($resultSym as $result) {
$alergenosUser->getAlergenos()->remove($result);
}
$em->persist($alergenosUser);
$em->flush();

你能帮我弄清楚我做错了什么吗?非常感谢!

最佳答案

要从集合中删除项目,请使用以下命令:

$collection->removeElement($item);
remove($key)函数将通过键删除,而 removeElement($item)如果找到,则从集合中删除该项目。看看 ArrayCollection code here .

请注意,原则只会检查关系的拥有方是否有变化。

关于Symfony2 删除并保存多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18528951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com