/** * {@inheritdoc} */ public function synchronizeVariationsCollections(ProductInterface $product, ArrayCollection $variations = null) { if (in_array('productCollections', $this->getVariationFields())) { return; } if (!$variations) { $variations = $product->getVariations(); } $productCollections = $product->getCollections(); /** @var ProductInterface $variation */ foreach ($variations as $variation) { $variationCollections = $variation->getCollections(); // browsing variation collections and remove excessing collections foreach ($variationCollections as $variationCollection) { if ($variationCollection && !$productCollections->contains($variationCollection)) { $this->productCollectionManager->removeCollectionFromProduct($variation, $variationCollection); } } // browsing Product collections and add missing collections foreach ($productCollections as $productCollection) { if ($productCollection && !$variationCollections->contains($productCollection)) { $this->productCollectionManager->addCollectionToProduct($variation, $productCollection); } } } }