我的问题:我有一个实体用户和一个实体技能。用户可以拥有多种技能,技能可以拥有多个用户,因此我对此有一个关系ManyToMany。结果是第三个中间表名为" Users_Skills"使用列user_id和skill_id。
我想删除此表上的行,例如id_user = 5的所有行。
我不知道如何做到这一点,因为我没有表Users_Skills的实体,也没有存储库。最好的方法是什么?
答案 0 :(得分:1)
通常在使用Doctrine ORM时,您应该考虑对象而不是表和行。
$user = $em->getRepository('AppBundle:User')->find(5);
$skills = $user->getSkills();
foreach ($skills as $skill)
{
$user->removeSkill($skill);
}
$em->flush();
另一个选择
$user = $em->getRepository('AppBundle:User')->find(5);
$skills = $user->getSkills();
$skills->clear();
$em->flush();
答案 1 :(得分:0)
你只需要让你的用户实体获得id为5,清空他的技能列表,然后坚持并冲洗。
示例(在控制器中):
$id = 5;
$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository(User::class);
$user = $repository->find($id);
$user->setSkills([]);
$em->flush();