Ich habe zwei Entitäten mit Beziehung OneToMany, Project
und Services
. Jetzt möchte ich alle Dienste durch project_id entfernen.Doctrine 2 löschen mit Abfrage-Generator
Erster Versuch:
$qb = $em->createQueryBuilder();
$qb->delete('Services','s');
$qb->andWhere($qb->expr()->eq('s.project_id', ':id'));
$qb->setParameter(':id',$project->getId());
Dieser Versuch schlägt fehl mit der Ausnahme Entity Service does not have property project_id
. Und es ist wahr, dass die Eigenschaft nicht existiert, sondern nur in der Datenbanktabelle als Fremdschlüssel.
Zweiter Versuch:
$qb = $em->createQueryBuilder();
$qb->delete('Services','s')->innerJoin('s.project','p');
$qb->andWhere($qb->expr()->eq('p.id', ':id'));
$qb->setParameter(':id',$project->getId());
Dieser generetate eine nicht gültige DQL-Abfrage zu.
Alle Ideen und Beispiele sind willkommen.
Dritte Zeile kann wie folgt umgeschrieben werden: $ qb-> where ('s.project =: project'); – Oli