SugarCRM 6.5.26 CE - 使用 SugarBean 导出联系人 [php]

SugarCRM 6.5.26 CE - contacts export using SugarBean [php]

我有 SugarCrm 插件,可以将数据导出到外部服务。我正在为 updated/deleted/new 联系人使用逻辑挂钩,但我在同步现有数据时遇到了问题。我必须从 SugarCRM 中提取所有数据,并且我尝试使用了两种 SugarBean 方法:get_full_list() 和 get_list()。第一个给了我完整的联系人列表,但我需要分批发送 1000 个联系人,最多一个 Json,第二种方法 returns 只发送联系人的第一页(取决于配置设置 10 - 1000max项)。

我正在使用这种方法 ATM:

    // prepare contacts data from SugarBean
    $bean = BeanFactory::getBean($module);
    $contactResults = $bean->get_full_list();

然后在 $contactResults 上进行 foreach 并将我想要的数据保存为所需格式,并通过后请求将其作为 Json 发送。我试图找到将其分成批次的解决方案,但我卡住了 :( get_full_list 或 get_list 似乎都不适合我。

有什么建议吗?也许有人已经解决了这个问题? 提前致谢!

我觉得您的问题是创建批次?如果不是,请更具体地说明什么不起作用。

  • 要将数组拆分为多个批次,您可能需要查看 https://php.net/manual/en/function.array-chunk.php
  • 另外 get_list 支持检索以后的页面。它是这样定义的:function get_list($order_by = "", $where = "", $row_offset = 0, $limit=-1, $max=-1, $show_deleted = 0, $singleSelect=false, $select_fields = array())。 这意味着您可以为第二页指定 $row_offset = 1000,为第三页指定 2000,等等。所以基本上 运行 一个循环调用 get_list 与 $limit = 1000 并在每次迭代后将 0 的初始 $row_offset 增加 1000,直到少于 1000 条记录或 null 由函数返回。

如果您 运行 在处理这些 bean 时遇到问题,这里有一些一般提示:

  • 如果您遇到的问题是数据不完整,请尝试使用其 ID 手动加载每个 bean。默认情况下,某些 Sugar 函数不会加载所有(特殊)字段。
  • 如果事情似乎无缘无故地失败,请确保检查您的 PHP 日志中是否有错误。也许一次加载尽可能多的 beans 可能会导致 PHP 的 max_execution_timememory_limit.
  • 出现问题