2015-10-08 28 views
-1

我試圖存儲形式進入數據庫的一些領域,使用此代碼:Symfony2的形式 - 實體店到數據庫

$data = $form->getData(); 
$em=$this->getDoctrine()->getManager(); 
$em=persist($data->getCompany()); 
$em->flush(); 
return $this->redirectToRoute('target_success');} 

,但我得到以下錯誤:

Attempted to call function "persist" from namespace "site\formBundle\Controller". 

任何幫助將受到歡迎。

+0

persist是一個'Entity Manager'方法,而不是一個PHP函數 – Trix

回答

1

$em=persist ...應該$em->persist(...);

而且我不知道這是去工作。 getCompany()是否返回實體?

+0

這不會提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – vonbrand

+1

@vonbrand我認爲它確實回答了這個問題(特別是關於提出的具體錯誤) - 這是一個代碼錯字。 – kibibu

+0

請使用意見來澄清問題。不要將它們包含在答案主體中。 –

0

$ em-> persist()必須有一個實體對象的實例作爲其參數。 persist操作告訴Doctrine你希望這個實體被寫入數據庫。你不能給個別字段堅持(),它會寫入整個對象。此外,您似乎正在嘗試將表單寫回數據庫。您需要將表單傳遞給實體對象,然後將該對象保存到數據庫中。你創建了一個實體類嗎?

我不知道爲什麼你需要逐個回寫字段到數據庫(這是一個非常奇怪的要求)。

我沒有建議任何代碼,因爲不清楚你是否有實體課,所以我只能建議你閱讀Symfony's simple form guide。這將向您展示如何定義實體,如何創建表單,如何將提交的表單複製回實體對象,以及如何將實體對象寫入數據庫。

+0

好的我明白,有一種方法可以自動創建數據庫表,或者我可以自己創建它, – user2820116

+0

您需要將表定義爲實體類。實體類定義了表的結構,實體的每個實例都表示表中的一行。假設你正在走學說路線,請參閱以下頁面:http://symfony.com/doc/current/book/doctrine.html – Adambean