2014-09-25 58 views
0

我有一個實體Symfony2的單一形式將多個條目添加到數據庫中,一旦

class User 
{ 
    /** 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=17) 
    */ 
    protected $mac; 

    /** 
    * @ORM\Column(type="string", length=10) 
    */ 
    protected $sensor; 

    /** 
    * @ORM\Column(type="integer", length=4) 
    */ 
    protected $sensitivity; 

/** getters and setters **/ 
} 

數據庫中的每個用戶應該有,因爲三個不同的傳感器的三個項目,我需要創建一個表單來增加新用戶與那些傳感器名稱($傳感器)及其敏感度。是否有可能用一個單一的表單來做到這一點?表單的輸入應該是輸入mac(text),sensor1(number),sensor2(number),sensor2(number)。是否有可能用一個單一的表單來做到這一點?怎麼樣?

+0

您希望將多個傳感器編號存儲到一列(序列化)中,並製作一個表格來處理這個問題? – Leto 2014-09-25 12:47:11

+0

它應該是數據庫中具有相同mac但傳感器和靈敏度不同的多個條目(行) – Einius 2014-09-25 13:01:06

+0

您可以在表單中創建一個默認值爲空值的用戶集合(因爲您只希望每個用戶保存X行。 https://gist.github.com/Venzon/8694089)。這將是一個不需要原型的集合(靜態集合的種類)。 – Leto 2014-09-25 13:35:08

回答

1

好吧,我所做的就是使用createFormBuilder()創建所有需要輸入的表單而不提供實體。然後,我創建了一個新的對象$user = new User();然後:還需要

$em = $this->getDoctrine()->getManager();   
    $user->setMac($form['mac']->getData()); 
    $user->setSensor('wiliboxas1'); 
    $user->setSensitivity($form['sensor1']->getData()); 
    $em->persist($user); 
    $em->flush(); 
    $em->clear(); 
    $user->setSensor('sensor2'); 
    $vartotojas->setSensitivity($form['sensor2']->getData()); 
    $em->persist($user); 
    $em->flush(); 
    $em->clear(); 

    //and so on.. 

$em->clear()因爲否則將只添加一個條目。

相關問題