Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 在DQL中使用join删除函数_Symfony_Twig_Dql - Fatal编程技术网

Symfony 在DQL中使用join删除函数

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')

我正在尝试使用Doctrine QueryBuilder使用query执行删除功能 我需要删除2个表中的记录, 在TcTracks表中,id为“id”,在TcWall中,id为“相关id”

我的控制器

  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]