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_time
或 memory_limit
. 出现问题
我有 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_time
或memory_limit
. 出现问题