Удалить с объединением - псевдоним не определен - PullRequest
0 голосов
/ 16 мая 2018

После внесения изменений в мою базу данных я должен удалить некоторые связанные записи в другой таблице.

Я сделал пользовательский запрос в своем репозитории:

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 голосов
/ 17 мая 2018

От одного из разработчиков самого Doctrine ответ таков: многие поставщики не поддерживают операторы JOIN в INSERT, UPDATE и DELETE, а Doctrine не включает функции, которые не являются кроссплатформенными.(почти дословно то, что он сказал).

См. полное обсуждение: https://github.com/doctrine/dbal/issues/2716

...