Doctrine orm doctrine2-删除所有onetomany关系

Doctrine orm doctrine2-删除所有onetomany关系,doctrine-orm,one-to-many,Doctrine Orm,One To Many,我有以下实体 专业的 时隙实体 我想删除给定专业人员的所有时间段,我尝试了 $professional->getTimeslots()->clear(); $em->persist($professional); $em->flush(); 这不会删除数据,如何删除给定专业人员的所有时隙?您可以使用->clear()来实现这一点,但您必须向专业人员实体添加一些代码 @ORM\OneToMany(targetEntity="UserBundle\Entity\Timesl

我有以下实体

  • 专业的
  • 时隙实体
  • 我想删除给定专业人员的所有时间段,我尝试了

    $professional->getTimeslots()->clear();
    $em->persist($professional);
    $em->flush();
    

    这不会删除数据,如何删除给定专业人员的所有时隙?

    您可以使用
    ->clear()
    来实现这一点,但您必须向
    专业人员
    实体添加一些代码

    @ORM\OneToMany(targetEntity="UserBundle\Entity\Timeslot", mappedBy="professional", cascade={"merge", "persist"}, orphanRemoval=true)
    
  • 添加cascade=“merge”
  • 设置为true
  • 然后在控制器中,您可以:

    $professional->getTimeslots()->clear();
    $professional = $em->merge($professional);
    $em->flush();
    

    希望它有帮助

    您可以通过
    ->clear()
    实现这一点,但您必须向您的
    Professional
    实体添加一些代码

    @ORM\OneToMany(targetEntity="UserBundle\Entity\Timeslot", mappedBy="professional", cascade={"merge", "persist"}, orphanRemoval=true)
    
  • 添加cascade=“merge”
  • 设置为true
  • 然后在控制器中,您可以:

    $professional->getTimeslots()->clear();
    $professional = $em->merge($professional);
    $em->flush();
    

    希望它有帮助

    我推荐一个
    存储库
    函数,它允许使用它。在您的情况下,您没有清除关系的拥有方。需要对Professional::timeSlots属性进行级联删除。至少可以说,层叠的东西是很棘手的。在Timeslot::professional上使用cascade属性没有什么意义。我建议使用
    存储库
    函数来允许它。在您的情况下,您没有清除关系的拥有方。需要对Professional::timeSlots属性进行级联删除。至少可以说,层叠的东西是很棘手的。在Timeslot::professional上拥有cascade属性没有什么意义。