代码之家  ›  专栏  ›  技术社区  ›  Azoulay Jason

如何通过id-sugarcrm以外的任何方法获取记录

  •  2
  • Azoulay Jason  · 技术社区  · 8 年前

    你可能不清楚这个问题,但我的问题很简单

    这个 SugarCRM documentation 建议要获取记录,我应该向 /<module>/:recordId .

    我想实现的是通过它的电子邮件获得一个记录。

    在sugarcrm的前一个版本中,我可以在有效负载请求中向它们的api发送sql查询。 但在这里,因为这是一个get请求,所以没有实体。

    我需要帮助

    1 回复  |  直到 8 年前
        1
  •  3
  •   Jay    8 年前

    要通过匹配非id字段获取记录,可以使用记录筛选api /<module>/filter (见 documentation /rest/v10/help 指定要搜索哪些值的字段。

    如果最多只关心一个匹配记录,请指定 "max_num": 1 在选项中。

    作为响应,您将收到一个json对象,其中 records 包含匹配记录的数组。

    按电子邮件地址筛选

    电子邮件地址以前存储在字段email1、email2等中。 这些遗留字段仍然存在于sugar>=7(目前)中,可以与如下请求负载一起使用:

    {
        max_num: 1,
        filter: [
            {"email2": "test@secondary.test"},
        ],
        fields: ["id"],
    }
    

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

    然而,在现代的Sugar中,电子邮件地址存储在一个名为 email_addresses 它连接到电子邮件地址记录,可按如下方式进行搜索:

    {
        max_num: 1,
        filter: [
            {"email_addresses.email_address": {"$equals": "test@something.test"}},
        ],
        fields: ["id"],
    }
    

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

    随机相关注释

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