I am updating produts programmatically and it sometimes happens that an attribute for a product is not used anymore. In that case, the attribute value should of course be removed. However, I can not find a way to do that. The update works just fine, but values aren't getting removed from the model.

I have looked around a bit and it seemed that the following would be the solution:


But this does not remove the value. The attribute code is correct and everything else works perfectly fine. I also checked and it does use the right store.

I have gotten suggestions on doing this directly through the database, but I'd rather do it on the model for safety.

  • 2
    Try $product->setData($attributeCode, null);
    – Marius
    Aug 29 '14 at 8:43
  • 1
    $_Product->setAttributeCode(null); you can also use this
    – Keyul Shah
    Aug 29 '14 at 8:47

I suggest making the attribute's value empty:

$product->setData($attributeCode, '');



or, as you have saved the product you need to save the product object:


This will take effect after the object is saved.

  • That makes so much sense, setting the value to nothing. I feel stupid now.. Thanks! Aug 29 '14 at 9:15
  • This works fine, I have added the full code in my answer. Jan 23 '20 at 11:01

Here is the full code. This works fine for removing/empty attribute value.

foreach ($collection as $item) { $mypro = "PRODUCT ENTITY ID"; $productRepository=$objectManager>get('\Magento\Catalog\Api\ProductRepositoryInterface'); $product = $productRepository->getById($mypro); $product->setData("PRODUCT_ATTRIBUTE_CODE_GOES_HERE", ''); $product->save(); }

  • 1
    Question is about magento 1.X.Not Magento 2.X
    – Amit Bera
    Jan 23 '20 at 11:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.