Hi,
I have coded a script to import my products.
It seems that - during coding and testing - many products have been created and connected to two different store IDs (0 and 1).
See here the details from one product in the database:
MariaDB [magentodb]> SELECT * FROM catalog_product_entity c1, catalog_product_entity_int c2 WHERE c1.sku = 70048 AND c2.entity_id = c1.entity_id AND c2.attribute_id = 97\G
*************************** 1. row ***************************
entity_id: 5637
attribute_set_id: 9
type_id: simple
sku: 70048
has_options: 0
required_options: 0
created_at: 2021-04-09 00:09:11
updated_at: 2021-07-14 11:43:37
value_id: 63089
attribute_id: 97
store_id: 0
entity_id: 5637
value: 0
*************************** 2. row ***************************
entity_id: 5637
attribute_set_id: 9
type_id: simple
sku: 70048
has_options: 0
required_options: 0
created_at: 2021-04-09 00:09:11
updated_at: 2021-07-14 11:43:37
value_id: 495803
attribute_id: 97
store_id: 1
entity_id: 5637
value: 1
The value at the end shows that one version is active and the other is not.
The version I see in my admin is the first one. The version that is shown in the front-end is the second.
My question is:
How can I remove all the products related to the store-id = 0 so that I keep those with store-id = 1?
Thanks for you help
First I would like to suggest you try to avoid object manager directly in your code.
<?php
namespace VendorName\ModuleName\Block;
class Product extends \Magento\Framework\View\Element\Template
{
public $productCollectionFactory;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
array $data = []
)
{
$this->productCollectionFactory = $productCollectionFactory;
parent::__construct($context, $data);
}
public function getProductCollection()
{
$storeId = 0;
$collection = $this->productCollectionFactory->create();
$collection->addAttributeToSelect('*');
$collection->addStoreFilter($storeId);
return $collection;
}
}
?>Now you have product collection where store_id = 0. By using foreach loop through collection delete the products.
Click Kudos and Accept it as a solution its encourages me to write more answers.