2017-06-14 71 views
2

我們正在研究基於SilverStripe的網站,並且該網站與SugarCRM數據庫相連。將多個值添加到一列

我們已經創建了一個表格有CheckboxSet具有多個值,並將其存儲一個名爲$data['Interessen']

$set_entry_parameters = array(
    "session" => $session_id, 
    "module_name" => "Contacts", 
    "name_value_list" => array(
     array(
      "name" => "interessen_c", 
      "value" => $data['Interessen']['fotografie'] 
     ), 
     array(
      "name" => "interessen_c", 
      "value" => $data['Interessen']['dance'] 
     ) 
    ) 
); 

現在用"interessen_c"最後一個數組將覆蓋之前的值的變量。我們希望一次添加多個值。

這怎麼可能?

+1

你能澄清這個問題嗎?現在很難知道如何重現您的問題 –

+0

U可以直接使用,如「name_value_list」=> json_encode(array($ data ['Interessen'] ['fotografie'],$ data ['Interessen'] ['dance '],$ data ['Interessen'] ['etc'])); 雖然檢索你可以解碼它,所以你會像以前一樣得到純數組,如:json_decode(set_entry_parameters [「name_value_list」]); –

回答

1

如果$數據[「Interessen」]內容只能從一個充滿可能性的固定值列表,我建議你做現場interessen_cmultienum型(「多選擇下拉」字段) 。

對於該字段,創建Sugar中所有可用項目的列表(例如在Studio中或通過代碼手動創建app_list_strings條目)。

Sugar將在此字段中支持多個值,並很好地顯示它們。

如果您的程序通過與Sugar REST API進行通信來寫入數據,那麼您只需傳遞$data['Interessen']數組作爲interessen_c的值,Sugar將知道如何處理它。

如果你的程序在數據庫中的數據直接寫入interessen_c場,則該字段的內容必須符合以下格式:

^value1^,^value2^,^value3^

因此,與周圍的每個值和所有項目^

:由 ,

這裏的如何將數組值轉換成這樣的字符串在PHP的示例分離

$interessen = array(); 
foreach ($data['Interessen'] as $value) { 
    // add value surrounded by^to array 
    $interessen[] = "^$value^"; 
} 
// transform values in array to string with items being separated by , 
$interessen = implode(',', $interessen); 

側面說明:

從內糖可以使用encodeMultienumValue($arr)unencodeMultienum($string)從數組轉換爲DB-字符串格式和背部。
這兩個函數定義在include/utils.php

+0

非常感謝。現在它適用於您的解決方案。你怎麼知道'^'是必需的?我們沒有在文檔中找到任何關於此的信息。 – moses

+0

@moses我認爲我從過去的現有枚舉領域學到了它。但是,如果你是''sugarcrm multienum'的谷歌,第二個命中是[開發博客條目](https://developer.sugarcrm.com/2013/03/26/dealing-with-multienums-with-sugarcrm/)指定db格式 – Jay

+0

哦,請不要忘記接受答案,以便讓人們知道它已被解決:) – Jay