将多个值添加到一列

时间:2017-06-14 13:17:04

标签: php silverstripe sugarcrm

我们正在开发一个基于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 :(得分:1)

如果 $ data [' Interessen'] 的内容只能包含固定可能列表中的值,我建议您创建字段 interessen_c multienum类型("多选下拉"字段)。

对于该字段,创建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);

侧面注意:

从Sugar中可以使用encodeMultienumValue($arr)unencodeMultienum($string)从数组转换为db-string格式并返回。
这两个函数都在include/utils.php

中定义