通过REST API将CivCRM电子邮件设置为空白

时间:2014-09-26 00:17:05

标签: rest civicrm

我正在尝试在CiviCRM中将电子邮件地址设置为空白。我将一个数组序列化如下,并通过REST发布(代码是常规的):

def rest = [
                json: 1,
                api_key: apiKey,
                key: siteKey,
                debug: 1,
                version: 3,
                entity: 'Contact',
                action: 'create',
                contact_type: contact_type,
                overwriteblank:true,
                id: record.crID,
                rest["email[1][email]"] = modified.value as String
                rest["email[1][location_type_id]"] = 1
        ]

我尝试了'overwriteblank'选项 - 但电子邮件似乎仍然没有设置为空白。

由于

2 个答案:

答案 0 :(得分:2)

电子邮件地址是与联系人分开的API实体(因为联系人可以拥有无​​限数量的电子邮件地址)。您需要做的就是获取contact_id = whatever的电子邮件条目,然后删除它们。

$result = civicrm_api3('Email', 'get', array('contact_id' => $YOUR_CONTACT_ID));

然后检查错误并迭代$ result ['值']:

$deleted = civicrm_api3('Email', 'delete', array('id' => $YOURRESULTROW['id']));

使用SQL方法,您不会删除电子邮件,只需将该人的电子邮件设置为空字符串即可。

答案 1 :(得分:-1)

我能做的最好的是sql。

String sql_update = """update civicrm_email set email = "" where contact_id = ?"""