使用join删除 - 未定义别名

时间:2018-05-16 15:15:47

标签: symfony dql symfony-3.4

在我的数据库中进行更改后,我将删除另一个表中的一些相关条目。

我在我的存储库中进行了自定义查询:

public function removeOptionGc(VarianteEscalier $varianteEscalier) {
    $em=$this->getEntityManager();

    return $em->createQueryBuilder()
              ->delete(VarianteEscalierOptGc::class, "vogc")
              ->join("vogc.gardecorpsOption", "gco")
              ->where("vogc.varianteEscalier=:VARIANTE")
              ->andWhere("gco.type='option_gc_rampant' OR gco.type='option_gc_etage' OR gco.type='autres'")
              ->setParameters(array('VARIANTE'=>$varianteEscalier))
              ->getQuery()
              ->getResult();
}

当我执行它时,我将收到以下错误:

  

[语义错误]第0行,第94行附近' gco.type =' option_gc_rampant'':错误:' gco'没有定义。

这是我从此查询中获得的DQL:

DELETE AppBundle\Entity\VarianteEscalierOptGc vogc WHERE vogc.varianteEscalier=:VARIANTE AND (gco.type='option_gc_rampant' OR gco.type='option_gc_etage' OR gco.type='autres')

在尝试使用join

时,是否会忽略为什么会忽略delete

1 个答案:

答案 0 :(得分:1)

来自Doctrine本身的开发人员之一,答案是许多供应商不支持JOININSERTUPDATE语句中的DELETE,而且Doctrine不支持包括非跨平台的功能(几乎是他所说的逐字逐句)。

请参阅完整讨论:https://github.com/doctrine/dbal/issues/2716