productCollectionFactory->create() ->addAttributeToFilter('parent_skus', ['neq' => null]); $updateFails = []; /* @var $item \Magento\Catalog\Model\Product */ foreach ($collection as $item) { // $product = $this->productRepository->get($item->getSku(), true); $parentSkus = explode(',', $item->getData('parent_skus')); $parentSKusProduct = $this->productCollectionFactory->create() ->addAttributeToFilter('sku', ['in' => $parentSkus]); $validParentSkuCount = $parentSKusProduct->getSize(); $validParentSkus = $parentSKusProduct->getColumnValues('sku'); try { if ($validParentSkuCount) { if ($validParentSkuCount < count($parentSkus)) { $item->setData('parent_skus', implode(',', $validParentSkus))->setData('_edit_mode', true); $this->productRepository->save($item, true); echo 'product '.$item->getSku(). " updated, \033[32m part valid parent sku \033[0m: ". implode(', ', $validParentSkus). ', original parent sku: '.$item->getData('parent_skus').PHP_EOL; } } else { $item->setData('visibility', Visibility::VISIBILITY_NOT_VISIBLE)->setData('_edit_mode', true); $this->productRepository->save($item, true); echo 'product '.$item->getSku()." updated, \033[32m all parent skus \033[0m are invalid: ".$item->getData('parent_skus').PHP_EOL; } } catch (\Exception $e) { $updateFails[$item->getSku()] = $e->getMessage(); } } return $updateFails; } }