在我的数据库中进行更改后,我将删除另一个表中的一些相关条目。
我在存储库中进行了自定义查询:
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 AppBundleEntityVarianteEscalierOptGc vogc WHERE vogc.varianteEscalier=:VARIANTE AND (gco.type='option_gc_rampant' OR gco.type='option_gc_etage' OR gco.type='autres')
关于为什么当我尝试delete
时忽略join
的任何想法?
从 Doctrine本身的开发者之一来看,答案是许多供应商不支持JOIN
在INSERT
、UPDATE
和DELETE
语句中,并且 Doctrine 不包括非跨平台的功能(几乎逐字逐句地讲述了他所说的(。
查看完整讨论: https://github.com/doctrine/dbal/issues/2716