2017-06-14 67 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