向一列添加多个值

Add mutiple values to one column

我们正在开发一个基于 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" 的数组会覆盖之前的值。我们想一次添加多个值。

这怎么可能?

如果 $data['Interessen'] 的内容只能从固定的可能性列表中获取值,我建议将字段设为 interessen_c 输入 multienum ("Multi-Selection Dropdown" 字段)。

为该字段创建 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) 来回转换数组和数据库字符串格式。
这两个函数都在 include/utils.php

中定义