【问题标题】:Doctrine2 join doesn't works with deleteDoctrine2 加入不适用于删除
【发布时间】:2014-03-26 11:01:48
【问题描述】:

在我的 Repository 类中,我创建了方法 applyCriteria():

protected function applyCriteria(QueryBuilder $qb, array $criteria)
{
    $qb->leftJoin('co.file', 'file');

    $qb->andWhere($qb->expr()->eq('file.someField', $criteria['someField']));

    return $qb;
}

我以两种方式使用它:

public function findByCriteria(array $criteria = [])
{
    $qb = $this->applyCriteria($this->createQueryBuilder('co'), $criteria);

    return $qb->getQuery()->getResult();
}

public function deleteByCriteria(array $criteria = [])
{
    $qb = $this->applyCriteria($this->createQueryBuilder('co'), $criteria);

    $qb
        ->delete()
        ->getQuery()
        ->execute()
    ;
}

所以,findByCriteria() 工作正常,但调用 deleteByCriteria() 会抛出 Doctrine Exception 并显示消息 Error: 'file' is not defined. 可能导致问题的原因是什么?

【问题讨论】:

    标签: php symfony doctrine-orm


    【解决方案1】:

    我发现了。如果有人需要相同的:Doctrine QueryBuilder delete with joins

    问题在于 DQL 确实不适用于删除查询中的连接。所以我们应该使用 EntityManager 并一个一个地删除实体或创建另一个尖峰。

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 2014-07-05
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多