Sonata\Component\Product\ProductCategoryManagerInterface::addCategoryToProduct PHP Method

addCategoryToProduct() public method

Adds a Category to a Product.
public addCategoryToProduct ( Sonata\Component\Product\ProductInterface $product, Sonata\ClassificationBundle\Model\CategoryInterface $category, boolean $main = false )
$product Sonata\Component\Product\ProductInterface A Product entity
$category Sonata\ClassificationBundle\Model\CategoryInterface A Category entity
$main boolean Add as the main category?
    public function addCategoryToProduct(ProductInterface $product, CategoryInterface $category, $main = false);

Usage Example

 /**
  * {@inheritdoc}
  */
 public function synchronizeVariationsCategories(ProductInterface $product, ArrayCollection $variations = null)
 {
     if (in_array('productCategories', $this->getVariationFields())) {
         return;
     }
     if (!$variations) {
         $variations = $product->getVariations();
     }
     $productCategories = $product->getProductCategories();
     /** @var ProductInterface $variation */
     foreach ($variations as $variation) {
         // browsing variation categories and remove excessing categories
         foreach ($variation->getCategories() as $variationCategory) {
             if ($variationCategory && !$productCategories->contains($variationCategory)) {
                 $this->productCategoryManager->removeCategoryFromProduct($variation, $variationCategory);
             }
         }
         // browsing Product categories and add missing categories
         foreach ($productCategories as $productCategory) {
             $category = $productCategory->getCategory();
             if ($category && !$variation->getCategories()->contains($category)) {
                 $this->productCategoryManager->addCategoryToProduct($variation, $category, $productCategory->getMain());
             }
         }
     }
 }