2

我有一个产品导出,我尝试使用我的自定义插件导出所有对象。我正在使用以下方法加载所有对象

        $list = new Pimcore_Model_Object_Bodproduct();
        $list->setOrder ( "ASC" );
        $list->setOrderKey ( "o_id" );

        // Load all filtered objects - products
        $list->load ();

然后我使用 foreach 循环来访问对象。

它工作正常。但问题是导出需要花费大量时间。有没有其他解决方案。我的意思是代替load()功能,还有其他方法可用吗?

4

2 回答 2

2

您可以使用$list->loadIdList()仅获取对象 ID - 这应该更快。然后您可以Object::getById($id)在循环内调用以提供进度条(假设您的脚本在控制台中启动)。

实际上这是load()内部正在做的事情,请参阅Object\Listing\Resource 类

另一种选择是通过调用将负载拆分到多个“页面” $list->getItems($offset, $itemCountPerPage)

于 2015-10-13T07:56:39.187 回答
0

在 Pimcore 对象列表中,您可以在不调用方法的情况下遍历列表中的每个对象。load在您的情况下,只需删除"$list->load ();"并查看它会在更短的时间内工作。

于 2015-10-29T11:58:05.270 回答