2016-05-23 28 views
1

爲什麼Symfony不能將我的實體識別爲實體?如#2所示,Symfony知道這個類,而且它也應該能夠找到新聞實體。爲什麼remove()會考慮我的實體數組

/** 
* 
* @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" 

編輯: 錯誤:調用一個成員函數刪除()上的陣列

+0

您能告訴我們錯誤信息嗎? –

+0

@Emanuel Oster完成。 – HermanTheGermanHesse

+0

錯誤消息告訴你,'$ em'是一個數組,而不是'$ toDelete'。如果仔細觀察,你會看到,你調用'getManagers()'而不是'getManager()' –

回答

1

在辦公室裏有人向我指出,我叫getManagers()函數,該函數返回一個數組與所有的經理人。

爲了清楚起見,其餘的代碼也被推薦給我。

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

謝謝所有花時間開始處理我的問題的人。

1

正如一個提示,你可以使用find()函數避免魔喚,因爲您只使用ID

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

而且,我還可以得到關於它的問題,並使用instanceof

解決它
if($toDelete instanceof News) 
{ 
    $em->remove($toDelete); 
    $em->flush(); 
} 
相關問題