How to Remove Non-Product Objects¶
To remove one or many objects, we provide a service which provides methods ‘remove’ and ‘removeAll’ through the implementation of Akeneo\Component\StorageUtils\Remover\RemoverInterface
and Akeneo\Component\StorageUtils\Remover\BulkRemoverInterface
.
Use the Remover to Remove a Single Object¶
You can remove one or many objects of a kind with a special service, the remover checks that the used object is supported (for instance, you can’t use the attribute remover to remove a family).
We define these different services to facilitate future changes and allow you to override only one of them to add a specific business logic (for instance, override only attribute remover but not the family remover).
Some services already use specific classes but most of these services use the class Akeneo\Bundle\StorageUtilsBundle\Doctrine\Common\Remover\BaseRemover
.
$attributeRemover = $this->getContainer()->get('pim_catalog.remover.attribute');
$attributeRemover->remove($attribute);
$familyRemover = $this->getContainer()->get('pim_catalog.remover.family');
$familyRemover->remove($family);
$categoryRemover = $this->getContainer()->get('pim_catalog.remover.category');
$categoryRemover->remove($category);
Use the Remover to Remove many Objects¶
$attributeRemover = $this->getContainer()->get('pim_catalog.remover.attribute');
$attributeRemover->removeAll([$attributeOne, $attributeTwo]);
$familyRemover = $this->getContainer()->get('pim_catalog.remover.family');
$familyRemover->removeAll([$familyOne, $familyTwo]);
$categoryRemover = $this->getContainer()->get('pim_catalog.remover.category');
$categoryRemover->removeAll([$categoryOne, $categoryTwo]);