2016-05-23 10 views
1

Warum erkennt Symfony meine Entität nicht als Entität? Wie in # 2 zu sehen ist, kennt Symfony die Klasse und die Doktrin sollte es auch, da sie in der Lage ist, die Nachrichten-Entität zu finden.Warum entfernt remove() meine Entity als Array?

/** 
* 
* @Route("/news/delete/{id}", name="news_delete") 
*/ 
public function deleteAction($id) { 

    $toDelete = new News(); 

    $em = $this->getDoctrine()->getManagers(); 

    $toDelete = $this->getDoctrine() 
       ->getRepository('AppBundle:News') 
       ->findOneBy(array('id' => $id)); 

    dump($toDelete); //Posted under #1 
    dump(get_class($toDelete)); //Posted under #2 
    $em->remove($toDelete); 
    $em->flush(); 

    return $this->redirectToRoute('news_show', array(), 301); 
} 



#1: 
News {#926 ▼ 
     -id: 16 
     +headline: "1313" 
     +newsBody: "12313" 
     +date: DateTime {#1027 ▶} 
     +archiveDate: DateTime {#921 ▶} 
     -categories: PersistentCollection {#934 ▶} 
    } 

#2: 
"AppBundle\Entity\News" 

EDIT: Fehler: Rufen Sie auf eine Elementfunktion remove() auf Array

+0

Können Sie uns die Fehlermeldung zeigen? –

+0

@Emanuel Oster fertig. – HermanTheGermanHesse

+0

Die Fehlermeldung besagt, dass '$ em' ein Array ist, nicht' $ toDelete'. Wenn du genau hinsiehst, wirst du sehen, dass du 'getManagers() 'anstelle von' getManager() 'nennst –

Antwort

1

Im Büro wurde mir darauf hingewiesen, dass ich die getManagers genannt() Funktion, die ein Array zurückgibt mit allen Managern.

Der Rest des Codes wurde mir zur Verdeutlichung auch empfohlen.

$em = $this->getDoctrine()->getManager(); 
    $repo = $em->getRepository('AppBundle:News'); 
    $toDelete = $repo->findOneBy(array('id' => $id)); 

Vielen Dank an alle, die sich die Zeit genommen haben, an meiner Frage zu arbeiten.

1

nur als Tipps können Sie magischen Anruf mit find() Funktion vermeiden, da Sie nur id

$toDelete = $this->getDoctrine() 
      ->getRepository('AppBundle:News') 
      ->find($id); 

auch verwenden, habe ich auch Probleme über sie erhalten, und es gelöst instanceof mit

if($toDelete instanceof News) 
{ 
    $em->remove($toDelete); 
    $em->flush(); 
} 
Verwandte Themen