Symfony deleteaction多表删除

Symfony deleteaction多表删除,symfony,Symfony,嗨,我想在删除产品时删除另一个表中的产品。我想在控制器上做这个 $deleteQuery = $this->getDoctrine() ->getManager() ->createQueryBuilder('d') ->delete('TechnoSiteBundle:Sepet', 's') ->where('s.id = ' . $request->get('id'))->getQue

嗨,我想在删除产品时删除另一个表中的产品。我想在控制器上做这个

$deleteQuery = $this->getDoctrine()
        ->getManager()
        ->createQueryBuilder('d')
        ->delete('TechnoSiteBundle:Sepet', 's')
        ->where('s.id = ' . $request->get('id'))->getQuery();
    $deleted = $deleteQuery->getResult();

我想删除两个相关的产品。当我使用Cascade时,我得到了这个错误

2/2DBALException: An exception occurred while executing 'DELETE FROM ebatlar WHERE id = ?' with params [30]:

关于你的实体信息如此之少,你应该做什么还不是很清楚

一些需要探索的事情:

  • 如果您的两个
    产品
    行是相关的,您可能希望在某处使用注释

  • 如果要手动删除两个实体,则不阻止运行两个查询

  • 关于Doctrine、Symfony和MVC的最佳实践的一些注释(与您的问题没有直接关系,您不必遵循这些指导原则,但您绝对应该遵循这些指导原则,因为从长远来看,这将使您的生活更加轻松):

    • 你不应该在控制器中加入太多的逻辑。在Symfony中,您希望控制器几乎为空。您创建了一个包含逻辑的服务,并在适当的操作中从控制器调用它。随着项目的发展,您会注意到这有许多优点:代码重复更少,无需更改控制器即可自由更改模型,等等
    • 使用诸如
      ->where('s.id='.$request->get('id'))之类的连接比使用连接更好。
      。这个
      $request->get('id')
      是用户可以伪造的东西,用户可以在
      where
      子句中插入他想要的任何东西

您需要提供更多详细信息。您是否可以编辑您的问题并添加相关实体的代码(不需要getter和setter)?您进行了编辑,但似乎没有完成要求您执行的操作。没有人能以这种速度帮助你。当我们问某事时,背后有一个原因。再一次,将您的两个实体添加到您的问题中(没有getter和setter),我希望从控制器执行此操作。因为我使用了另一个表的级联关系。
2/2DBALException: An exception occurred while executing 'DELETE FROM ebatlar WHERE id = ?' with params [30]: