akeneo-pim-system-info_2016-06-16_14-41.txt
おそらくhttps://github.com/akeneo/pim-community-dev/issues/2644と同じです(説明なしで閉じられ
一括編集を介して製品属性に値を追加すると、バージョン管理は正しいタイムスタンプで更新されますが、製品が更新されたタイムスタンプは更新されません。
これは、1つの製品を一括編集し、 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
がありません、通常ですか?
「商品属性に値を追加する場合」とはどういう意味ですか? 一般的な製品の価値を変えようとしましたか? 新規インストールで再現しようとしましたが、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
としており、新しい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は常に同期していません。 NormalizedDataは1ステップ遅れています。
データが製品モデルに設定されている場合、ノーマライザーは$data['updated'] = $this->mongoFactory->createMongoDate();
を実行する必要はないと思います。 これはノーマライザーであり、アップデーターではありません。
実際には、正規化する前に製品を更新する必要があります(つまり、フィールドを更新する必要があります)。
+1
イモ。 閉じることができます。 意見は?
@nidupがhttps://github.com/akeneo/pim-community-dev/issues/4620#issuecomment-279428030で指摘しているように、これはPIM-6038で修正されています。
最も参考になるコメント
イモ。 閉じることができます。 意見は?