你可能不清楚这个问题,但我的问题很简单
SugarCRM documentation建议要获取记录,我应该向 /<module>/:recordId
发送 GET 请求.
我想要实现的是通过电子邮件获取记录。
在 SugarCRM 的早期版本中,我可以在有效负载请求中向其 API 发送 SQL 查询。 但这里因为是 GET 请求,所以没有正文。
我需要帮助
最佳答案
要通过匹配非 ID 字段来获取记录,您可以使用记录过滤器 API /<module>/filter
(请参阅 Sugar 的 documentation 或 /rest/v10/help
)以指定在哪些字段中搜索哪些值。
如果您最多只关心一条匹配记录,请指定 "max_num": 1
在选项中。
作为响应,您将收到一个带有 records
的 json 对象。包含匹配记录的数组。
按电子邮件地址过滤
电子邮件地址以前存储在 email1、email2 等字段中。 这些遗留字段仍然存在于 Sugar >=7 中(目前),并且可以与如下请求负载一起使用:
{
max_num: 1,
filter: [
{"email2": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b2c6d7c1c6f2c1d7d1dddcd6d3c0cb9cc6d7c1c6" rel="noreferrer noopener nofollow">[email protected]</a>"},
],
fields: ["id"],
}
这将仅在辅助电子邮件地址中搜索电子邮件地址。
但是,在现代 Sugar 中,电子邮件地址存储在名为 email_addresses
的关系支持的链接字段中。连接到 EmailAddress 记录,可以像这样搜索:
{
max_num: 1,
filter: [
{"email_addresses.email_address": {"$equals": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="087c6d7b7c487b67656d7c6061666f267c6d7b7c" rel="noreferrer noopener nofollow">[email protected]</a>"}},
],
fields: ["id"],
}
这将返回与任何电子邮件地址匹配的记录。无论是主要的还是其他的。
随机相关注释
- 过滤器端点显然支持
GET
和POST
方法,以便您可以选择是通过请求的查询字符串还是在请求正文中传输过滤器定义和选项。 -
GET
请求/<module>
端点将使用相同的底层过滤器 API。但是您无法使用POST
进行过滤上/<module>
,因为该组合是为创建新记录而保留的。 - 如果您不确定 Sugar 过滤器语法中的搜索条件应是什么样子,您可以使用 Sugar 在模块 ListView 中创建示例过滤器,并在浏览器的调试器的网络选项卡中检查 Sugar 生成的请求负载看起来像。
- 如果您需要通配符搜索,可以使用通配符
%
来完成。 ,例如对于%@whatever.test
,似乎需要使用与$equals
不同的运算符不过,例如$starts
或$contains
. - 如果您只关心匹配数,而不关心实际记录,请将您的过滤器发送至
/<module>/count
(GET
) 端点或到/<module>/filter/count
(GET
或POST
)。 - 在开发测试期间,我建议使用
max_num
高于您期望返回的值,以确保您在由于过滤器定义不正确而导致结果出现任何误报时立即看到它。那还是关注next_offset
在响应 json 中:它将具有值-1
如果没有比响应中已返回的结果更多的结果。 - 有一个简短的符号
$equals
运算符,例如{"email_addresses.email_address": {"$equals": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="16627365625665797b73627e7f78713862736562" rel="noreferrer noopener nofollow">[email protected]</a>"}},
也可以写成{"email_addresses.email_address": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6c18091f182c1f030109180405020b4218091f18" rel="noreferrer noopener nofollow">[email protected]</a>"}
,.
关于sql - 如何通过 id 以外的任何其他方式获取记录 - SugarCRM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50608040/