1

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

我正在使用这种方法ATM:

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

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

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

4

1 回答 1

0

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

  • 要将数组拆分为批次,您可能需要查看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,对于第三页 make it2000等等。所以基本上运行一个循环,用$limit=调用 get_list1000并在每次迭代后增加初始$row_offsetof 01000直到少于1000记录或null由函数返回.

如果您在处理这些 bean 时遇到问题,以下是一些一般性提示:

  • 如果您遇到的问题是数据不完整,请尝试使用其 ID 手动加载每个 bean。默认情况下,某些 Sugar 函数不会加载所有(特殊)字段。
  • 如果事情似乎无缘无故地失败,请务必检查您的 PHP 日志是否有错误。也许一次加载尽可能多的 bean 可能会导致您的 PHPmax_execution_timememory_limit.
于 2017-12-11T17:29:41.560 回答