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
2/2DBALException: An exception occurred while executing 'DELETE FROM ebatlar WHERE id = ?' with params [30]: