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
لذلك ، قد يكون لهذا علاقة بحقيقة أن \Pim\Bundle\CatalogBundle\EventSubscriber\TimestampableSubscriber
يستمع فقط إلى أحداث Doctrines prePersist
و preUpdate
. لا يرسل \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll
تلك الأحداث على الإطلاق.
بعد النظر في الأمر ، يتم إنشاء التواريخ في \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize
عند تنفيذ saveAll
. لا يزال لغزا لماذا لا يأخذ EnhancedConnectors fromLastExecution
هذه المنتجات في الحسبان. هل هناك خطأ منطقة زمنية في مكان ما؟
يبدو أن MondoDB normalizedData.updated
لم يتم تحديثه ...
مرحبًا ماتياس ،
ماذا تعني بعبارة "عند إضافة قيم إلى سمات المنتج"؟ هل حاولت تغيير قيمة منتج مشترك؟ حاولت إعادة إنتاجه عند تثبيت جديد ولكن تم تحديث حقل المنتج updated_at
جيدًا.
في معلومات نظامك ، ليس هناك EnhancedConnectors
، عادي؟
ماذا تعني بعبارة "عند إضافة قيم إلى سمات المنتج"؟ هل حاولت تغيير قيمة منتج مشترك؟ حاولت إعادة إنتاجه عند تثبيت جديد ولكن تم تحديث حقل المنتج المحدث بشكل جيد.
نعم ، قم بتغيير أي سمة على الإطلاق بحيث يتم تمييز المنتج للتغييرات ، وبالتالي يستمر.
في معلومات النظام الخاص بك ، لا يوجد EnhancedConnectors ، طبيعي؟
عرضي
عند إجراء تعديلات جماعية (ما هي الطرق التي ستستدعي \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll
) ، سيُطلق على التالي اسم \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize
نظرًا لأننا في فرع 1.4.x ، نرى جيدًا أن قيمة المنتجات _محدثة_ يتم تحديثها هنا
https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87
لكن الاستعلامات من خلال معالج mongo تستهدف المنتجات normalizedData
ولا يتم تحديث ذلك باستخدام الطوابع الزمنية الجديدة created
و updated
(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 :
الحقل المحدث للمنتج و normalizedData.updated غير متزامنين دائمًا. تطبيع البيانات خطوة واحدة في وقت متأخر.
أعتقد أن أداة التسوية لن تضطر أبدًا إلى عمل $data['updated'] = $this->mongoFactory->createMongoDate();
إذا تم تعيين البيانات في نموذج المنتج. إنه تطبيع وليس محدثًا.
الحقيقة هي أنه يجب تحديث المنتج (حتى الحقل المحدث) قبل التطبيع.
+1
مرحبًا mathewrapid ، jlestel ، bmarrot !
لمعلوماتك ، تم إصلاح هذه المشكلة (PIM-6038) في الإصدارات التالية ،
مع أطيب التحيات،
إيمو. يمكن أن تكون مغلقة. آراء؟
كما أشار nidup في https://github.com/akeneo/pim-community-dev/issues/4620#issuecomment -279428030 ، تم إصلاح هذا في PIM-6038.
التعليق الأكثر فائدة
إيمو. يمكن أن تكون مغلقة. آراء؟