代码之家  ›  专栏  ›  技术社区  ›  maciey_b

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

  •  1
  • maciey_b  · 技术社区  · 8 年前

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

    我使用这种方法:

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

    然后foreach on$contactResults并将数据保存为所需的格式,并通过postrequest将其作为Json发送。我试图找到将其拆分为多个批次的解决方案,但我陷入了困境:(get\u full\u list或get\u list似乎对我都不起作用。

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

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

    听起来你的问题是创建批?如果没有,请更具体地说明什么不起作用。

    • 要将阵列拆分为多个批次,您可能需要查看 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\u list $limit = 1000 并增加初始 $行\u偏移 属于 0 通过 1000 每次迭代后,直到小于 1000 记录或 null 由函数返回。

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

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