Pim-community-dev: 大量修改-更新于

创建于 2016-06-16  ·  11评论  ·  资料来源: akeneo/pim-community-dev

akeneo-pim-system-info_2016-06-16_14-41.txt

可能与https://github.com/akeneo/pim-community-dev/issues/2644中的内容相同(已关闭,没有解释)

通过批量编辑将值添加到产品属性时,版本控制会使用正确的时间戳进行更新,但不会更新产品更新的时间戳。

可以通过批量编辑一种产品并运行php app/console --env=prod pim:product:query '[{"field":"updated","operator":">= WITH TIME","value":"YYYY-MM-DD HH:mm:ss"}]'

这对使用EnhancedConnectors fromLastExecution选项的某些导出配置文件具有重大影响。

笔记。 正在使用MongoDB->批量编辑将使用\Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll

bug to reproduce

最有用的评论

Imo。 可以关闭。 意见?

所有11条评论

因此,这可能与以下事实有关: \Pim\Bundle\CatalogBundle\EventSubscriber\TimestampableSubscriber仅侦听教义prePersistpreUpdate事件。 \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll根本不发出这些事件。

在调查之后,执行saveAll时,日期确实在\Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize创建。 为什么EnhancedConnectors fromLastExecution不考虑这些产品仍然是个谜。 某个地方是否存在时区不匹配?

看来MondoDB的normalizedData.updated没有得到更新...

嗨Matias,

“在为产品属性添加值时”是什么意思? 您是否尝试更改共同的产品价值? 我尝试在全新安装中重现它,但是updated_at产品字段已很好地更新。
在您的系统信息中,没有EnhancedConnectors ,正常吗?

“在为产品属性添加值时”是什么意思? 您是否尝试更改共同的产品价值? 我尝试在全新安装中重现它,但updated_at产品字段已很好地更新。

是的,更改哪个属性,以便将产品标记为更改,从而将其保留下来。

在您的系统信息中,没有EnhancedConnectors,正常吗?

不相关的

进行批量编辑时(无论哪种方法都将调用\Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll ),以下内容将称为\Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize
正如我们在1.4.x分支中一样,很好地看到产品_updated_值已在此处更新
https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87
但是通过mongo处理程序进行的查询针对的是产品normalizedData ,并且不会使用新的createdupdated时间戳进行更新(https://github.com/akeneo /pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L99)。

作为一种解决方法,我们正在监听akeneo.storage.pre_save_all事件并在那里更新产品时间戳。

与#5006相关/重复
@ aRn0D这不是一个问题,它是一个错误; 按照#5006可以在ORM模式下使用,但不能在ODM模式下使用

向上。
我在我们的PIM实例中重现了该错误。

规范化器会更新动态更新的“根”字段,但不会将其更新为产品对象。 因此,正如@mathewrapid所说:

  • 在这里,更新的根字段可以(https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87);
  • 并在normalizedData上对产品对象内存进行规范化(https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer .php#L99)

产品更新字段和normalizedData.updated始终不同步。 NormalizedData迟了一步。

我认为,如果在产品模型中设置了数据,则规范化器永远不必执行$data['updated'] = $this->mongoFactory->createMongoDate(); 。 它是规范器,而不是更新器。

事实是,在标准化之前必须更新产品(如此更新的字段)。

+1

@mathewrapid@jlestel@bmarrot

仅供参考,此问题(PIM-6038)已在以下版本中修复,

此致,

Imo。 可以关闭。 意见?

正如@niduphttps://github.com/akeneo/pim-community-dev/issues/4620#issuecomment -279428030中指出的那样,此问题已在PIM-6038中修复。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ronn0 picture ronn0  ·  4评论

lpxavi picture lpxavi  ·  4评论

ronthedrummer picture ronthedrummer  ·  3评论

henryktews picture henryktews  ·  4评论

Piotr-Borek picture Piotr-Borek  ·  5评论