删除并加入 - 别名未定义

Delete with join - Alias not defined

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

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

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();
}

当我执行它时,会出现以下错误:

[Semantical Error] line 0, col 94 near 'gco.type='option_gc_rampant'': Error: 'gco' is not defined.

这是我从这个查询中得到的 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')

知道为什么当我尝试 deletejoin 被忽略了吗?

来自 Doctrine 本身的开发者之一,答案是许多供应商在 INSERTUPDATEDELETE 语句中不支持 JOIN,而 Doctrine不包括不跨平台的功能(几乎一字不差他说的)。

查看完整讨论:https://github.com/doctrine/dbal/issues/2716