2016-04-30 11 views
0

Ich benutze Symfony 2.8. In der Funktion editAction() von Entity "Offerte" Ich habe diesen Code:Doctrine Query Builder löschen "von" ohne "von"?

foreach($offerte->getGallery() as $gallery) { 
      dump($gallery); 
      if ($gallery->getImageName() == '') { 
       dump("io sono dentro if"); 
       dump($gallery->getId()); 
       $qb = $em->createQueryBuilder(); 
       $qb->delete('ImageOfferte', 'io'); 
       $qb->from('image_offerte','io'); 
       $qb->where('io.id = :id'); 
       $qb->setParameter(':id', $gallery->getId()); 
       $qb->getQuery()->execute(); 
       dump($qb->getDQL()); 
       exit(); 
      } 
} 

ImageOfferte ist eine andere Entität über eine OneToMany Beziehung verknüpft (über $ Galerie Feld)

Dieser Code zurückgeben mir diesen Fehler:

[Semantical Error] line 0, col 7 near 'ImageOfferte': Error: Class 'ImageOfferte' is not defined.

Wo ist mein Fehler? Ich habe eine andere "Frage" here on stackoverflow gefunden, die besagt, dass "Löschanweisung ist anders als die Auswahl", aber ich verstehe nicht, wie ich meine "ImageOffer" in dieser Antwort verwenden kann.

Wenn ich diesen Code verwenden ist alles ok:

$query = $em->createQuery('delete FROM AppBundle:ImageOfferte io where io.id = '.$gallery->getId()); 
$result = $query->execute(); 
+0

In Ihrem ersten Beispiel übergeben Sie einfach den Namen der Entitätenklasse als Argument, während Sie in Ihrem zweiten Beispiel die Kurzsyntax 'BundleName: EntityName' verwenden. Fix das in Ihrem Code, und Sie sollten gut gehen. – Artamiel

Antwort

1

Ich denke, dass Sie das entfernen sollte -> aus().

$qb = $em->createQueryBuilder(); 
$qb->delete('ImageOfferte', 'io'); 
$qb->where('io.id = :id'); 
$qb->setParameter(':id', $gallery->getId()); 
$qb->getQuery()->execute();