I have two Entities with relation OneToMany, Project
and Services
. Now i want to remove all the services by project_id.
First attempt:
$qb = $em->createQueryBuilder(); $qb->delete('Services','s'); $qb->andWhere($qb->expr()->eq('s.project_id', ':id')); $qb->setParameter(':id',$project->getId());
This attempt fails with the Exception Entity Service does not have property project_id
. And it's true, that property does not exists, it's only in database table as foreign key.
Second attempt:
$qb = $em->createQueryBuilder(); $qb->delete('Services','s')->innerJoin('s.project','p'); $qb->andWhere($qb->expr()->eq('p.id', ':id')); $qb->setParameter(':id',$project->getId());
This one generetate a non valid DQL query too.
Any ideas and examples will be welcome.
You're working with DQL, not SQL, so don't reference the IDs in your condition, reference the object instead.
So your first example would be altered to:
$qb = $em->createQueryBuilder(); $qb->delete('Services', 's'); $qb->where('s.project = :project'); $qb->setParameter('project', $project);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With