代码之家  ›  专栏  ›  技术社区  ›  Preciel

使用联接删除-未定义别名

  •  0
  • Preciel  · 技术社区  · 6 年前

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

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

    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_':错误:“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 回复  |  直到 6 年前
        1
  •  1
  •   Francesco Abeni    6 年前

    从条令本身的一位开发者那里,答案是许多供应商不支持 JOIN 在里面 INSERT ,则, UPDATE DELETE 声明和原则不包括不跨平台的功能(几乎一字不差地说出了他的话)。

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