Symfony 在DQL中使用join删除函数
我正在尝试使用Doctrine QueryBuilder使用query执行删除功能 我需要删除2个表中的记录, 在TcTracks表中,id为“id”,在TcWall中,id为“相关id” 我的控制器Symfony 在DQL中使用join删除函数,symfony,twig,dql,Symfony,Twig,Dql,我正在尝试使用Doctrine QueryBuilder使用query执行删除功能 我需要删除2个表中的记录, 在TcTracks表中,id为“id”,在TcWall中,id为“相关id” 我的控制器 public function deleteAction(Request $request){ $deleteQuery = $this->getDoctrine() ->getManager() ->createQueryBuilder('d')
public function deleteAction(Request $request){
$deleteQuery = $this->getDoctrine()
->getManager()
->createQueryBuilder('d')
->delete('TcPlayerBundle:TcTracks', 'd')
->innerJoin('TcprofileBundle:TcWall', 't', 'ON', 'd.id = t.related_id')
->where('d.id = :dId')
->setParameter('wId', $request->get('related_id'))
->setParameter('dId', $request->get('id'))
->getQuery();
$deleted = $deleteQuery->getResult();
$deleted->flush();
return $this->render('TcPlayerBundle:Default:all.html.twig',array(
'tracks' => $tracks
));
}
我需要删除两个表中的同一条记录,但它不会同时对两个表执行,请帮助我
我得到了错误的答案
Invalid parameter number: number of bound variables does not match number of tokens
删除下面的行:
->setParameter('wId', $request->get('related_id'))
只有:dId
,但没有:wId
实际上,您通过
'd.id=t.related\u id'
进行了内部联接,因此无需再设置related\u id
。查询中的任何地方都没有wID
参数。同时,您使用的是->setParameter('wId',$request->get('related_id'))
,在本例中这是过时的。尝试删除此行,应该可以。是与实体的一对多关系
TcPlayerBundle:TcTracks
及
如果是这样,你可以做一些类似的事情:
oneToMany:
cascade: [remove]
在您的配置'yourentity.orm.yml'文件中
希望能帮助你 它仅在1个表中移除,但在墙表中不移除
oneToMany:
cascade: [remove]