【发布时间】: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