保存产品属性而不保存整个产品
保存产品属性而不保存整个产品

保存产品属性而不保存整个产品

2010年11月30日出版 in 发展
获取可配置的超级属性
2010年11月1日
Llama Lock在洛杉矶:在Magento Imagine会议上发言
2011年2月3日

今天我面临着一个有趣的任务。我需要在合理的时间内立即更新多达数千种产品的属性。我的第一个想法是加载一系列产品,然后保存该集合。在引擎盖下,保存集合只需通过该集合中的所有型号循环循环,并在模型上调用保存方法。

当我测试代码时,我在这个方向上开始,magento扔了以下错误:

例外‘zend_db_statement_exception.’ with message ‘SQLSTATE [23000]:完整性约束违规:1048列‘value’ cannot be null’

在与其他其他开发人员进行咨询后,我意识到,因为一个集合没有加载整个产品,而是只加载整个产品,而且只加载产品的子集’属性。我尝试加载每一个产品并保存它,但这结果令人痛苦。它会花费几个小时来节省几百个产品。显然,这是不可接受的。

我开始集思广益,我意识到我可以使用大众产品属性更新页面使用的相同方法。在调查此方法后,我意识到我只能发送每个属性更新的一个值。要绕过此限制,请使用新的属性值设置一个数组,其中包含具有该特定值的所有产品数组的值。此数组通过循环馈送,并为每个值调用更新属性方法。这结果是非常快,它简化了这种过程。

 

以下代码是我最终使用以更新属性的代码。

有关保存产品属性的前一个博客文章 这里。我在1162个产品集合的两种方法之间进行了比较。使用此方法采用6.233485秒,使用各个保存方法达到8.680476秒。虽然这种方法更快,但是两种方法之间的差异与相同的值数成比例。因此,2000年的集合范围超过5个值,将帮助超过2000的集合,其中1000个值。

  • 该模块基于Magento 1.4.1.1构建。它应该在大多数Magento的版本上工作。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.

最近的帖子查看全部
3月1日,2021年

Covid的巨大加速要求再次欺诈和消费者虐待警惕

2月3日,2021年

社交媒体在科迪德自然时期的增长’s One

1月5日,2021年

替代社交媒体

您是否注意到您的Facebook和Instagram内容似乎越来越少,并且每次通过都会越来越少?用于达到的帖子 […]