除了它的id之外,如何获得其他任何记录 - SugarCRM

时间:2018-05-30 15:06:56

标签: sql json sugarcrm

问题可能不清楚,但我的问题非常简单

SugarCRM documentation表示要获取记录,我应该向/<module>/:recordId发送GET请求。

我想要实现的是通过电子邮件获取记录。

在以前版本的SugarCRM中,我可以在有效负载请求中向其API发送SQL查询。 但是,因为这是一个GET请求,所以没有正文。

我需要帮助

1 个答案:

答案 0 :(得分:3)

要通过匹配非ID字段来获取记录,您可以使用记录过滤器API #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) (请参阅Sugar的documentation/<module>/filter)来指定要搜索的字段什么价值观。

如果您只关心一个匹配记录,请在选项中指定/rest/v10/help

作为响应,您将收到一个带有"max_num": 1数组的json对象,其中包含匹配的记录。

按电子邮件地址过滤

电子邮件地址以前存储在字段email1,email2等中。 这些遗留字段在Sugar&gt; = 7(现在)中仍然存在,并且可以与请求有效负载一起使用,如下所示:

records

这将仅在辅助电子邮件地址中搜索电子邮件地址。

但是,在现代Sugar中,电子邮件地址存储在一个名为{ max_num: 1, filter: [ {"email2": "test@secondary.test"}, ], fields: ["id"], } 的关系支持链接字段中,该字段连接到可以像这样搜索的EmailAddress记录:

email_addresses

这将返回任何电子邮件地址匹配的记录。无论是主要的还是另一个。

随机相关说明

  • 过滤器端点显然支持{ max_num: 1, filter: [ {"email_addresses.email_address": {"$equals": "test@something.test"}}, ], fields: ["id"], } GET方法,因此您可以选择是通过请求的查询字符串还是在请求正文中传输过滤器定义和选项。
  • POSTGET端点的请求将使用相同的底层过滤器API。但是,您无法使用/<module>上的POST进行过滤,因为该组合是为创建新记录而保留的。
  • 如果您不确定Sugar过滤器语法中的搜索标准应该是什么样的,您可以使用Sugar在模块列表视图中创建一个示例过滤器,并在浏览器的调试器的网络选项卡中检查Sugar的结果请求有效负载看起来像。
  • 如果您需要通配符搜索,则可以使用通配符/<module>来完成此操作,例如对于%,似乎需要使用与%@whatever.test不同的运算符,例如$equals$starts
  • 如果您只关心匹配数而不是实际记录,请将过滤器发送到$contains/<module>/count)端点或GET/<module>/filter/countGET)。
  • 在开发测试期间,我建议使用高于您预期返回的POST,以确保您可以立即看到它,如果由于过滤器定义不正确而导致结果出现任何误报。那或者密切关注响应json中的max_num:如果没有比响应中已经返回的结果更多的结果,它将具有值next_offset
  • -1运算符有一个简短的表示法,例如$equals也可以写为{"email_addresses.email_address": {"$equals": "test@something.test"}},,。