Doctrine Query Builder 从表中删除所有条目

L.S*_*L.S 6 php symfony doctrine-orm

我在使用查询构建器删除 id 找到的所有记录时遇到了一些麻烦,我尝试过像下面的代码一样,但我总是收到这个错误:

 [Semantical Error] line 0, col 53 near 'b.id = :surv': Error: 'b' is not defined. 
Run Code Online (Sandbox Code Playgroud)

方法:

public function deleteUsers($surveyId) {
    $qb = $this->getEntityManager()->createQueryBuilder();

    return $qb
        ->delete()
        ->from(BaseUser::class, 'a')
        ->leftJoin('a.survey', 'b')
        ->where('b.id = :survey')
        ->setParameter('survey', $surveyId)
        ->getQuery()
        ->execute()
        ;
}
Run Code Online (Sandbox Code Playgroud)

LBA*_*LBA 3

您根本无法在带有 Doctrine 的删除语句中使用连接。一个机会可能是先获取应从连接结果中删除的 id,然后执行简单的“删除 id 所在位置”。这会起作用。

另请参阅此问题/答案:Doctrine QueryBuilder delete with joins