내 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()
잘 작동하지만 호출 하면 What may cause the problem? deleteByCriteria()
메시지와 함께 Doctrine Exception Error: 'file' is not defined.
이 발생합니다.
나는 알아 냈다. 누구든지 같은 것이 필요한 경우 : Doctrine QueryBuilder delete with joins
문제는 DQL이 실제로 삭제 쿼리의 조인과 함께 작동하지 않는다는 것입니다. 따라서 EntityManager를 사용하고 엔티티를 하나씩 제거하거나 또 다른 스파이크를 만들어야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다