2015-09-04 32 views
0

我想更新名稱,如果有任何新的名稱可用。因此,所有的名稱都存儲在變量$ ,現在當我嘗試將數據合併到我的實體,它總是返回一個錯誤---學說將數據合併到實體類

注意:數組字符串轉換

我我做錯了,誰能幫我解決這個問題。

$names = Array ([0] => 11.se [1] => 22.se [2] => aa.se [4] => all.se [31] => allb.se [55] => ggg.com [56] => kkk.se [57] => lll.se [58] => mmm.se [60] => qqq.se [88] => zzz.se [89] ... 


    $data = new MyNames(); // Entity class 
    $data->setName($names); // set the names 

    $em->merge($data); // merge the new names 
    $em->flush(); 

實體類myclass--

/** 
* MyNames 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class MyNames 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255) 
    */ 
    private $name; 
+0

可能'setName($ name)'需要一個字符串,而不是一個字符串數組。您可以對數組進行foreach或更改實體,例如創建'setNames(數組$名稱)'。你可能應該用'class MyNames'的源代碼擴展你的問題 – dbrumann

回答

0

請問財產$name保持單個名稱或多個名稱?如果它只保留1個名字,那麼該類可能應該重命名爲MyName

如果$name只有1名,你可以做到以下幾點:

foreach ($names as $name) { 
    $data = new MyNames(); 
    $data->setName($name; 
    $em->merge($data); 
} 
$em->flush(); 

發佈的答案,因爲它太長的評論:

如果$name應持有與陣列中的所有名稱你可以做這樣的事情:

$data->setName(implode(',', $data)); 

你不提供太多的信息,所以有可能在某處。我假設這個班只是一個簡單的例子。因爲它沒有什麼意義。也許你可以提供一個上下文,例如該名稱用於什麼,你的班級還有哪些其他數據。這將有助於給出更好的答案。