No need to write a query in simple sql, you can use QueryBuilder for this:
$entityManager = $this->getEntityManager(); $queryBuilder = $entityManager->createQueryBuilder(); $subQueryCityDataSources = $queryBuilder->getEntityManager()->createQueryBuilder() ->select('cds') ->from(CityDataSource::class, 'cds') ->where('cds.dataSource = :dataSource') ; $queryBuilder->delete($entityClass, 'd'); $queryBuilder->where($queryBuilder->expr()->in('d.cityDataSource', $subQueryCityDataSources->getDQL())); $queryBuilder->setParameter('dataSource', $dataSource); $query = $queryBuilder->getQuery(); $query->execute();
This generates this request:
DELETE AppBundle\Entity\ConcreteData\News d WHERE d.cityDataSource IN ( SELECT cds FROM AppBundle\Entity\CityDataSource cds WHERE cds.dataSource = :dataSource )
Important note: you must add all parameters to the external request.
source share