سؤال

I am unable to save product multiselect values .I tried both ways Here is code

Way 1

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $_product = $objectManager->create('Magento\Catalog\Model\Product');
        $_product->load(757);
        $string = '5641,5642'; // option ids
     $_product->setData('multi_select_color_code',$string);
                $_product->save();

Way 2:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $_product = $objectManager->create('Magento\Catalog\Model\Product');
        $_product->load(757);
        $array= array('5641','5642'); // option ids
     $_product->setData('multi_select_color_code',$array);
                $_product->save();
هل كانت مفيدة؟

المحلول 3

Finally I solved my problem by putting

$product->setStoreId(0)

نصائح أخرى

Try this code

protected $productRepository;

public function __construct(
    .........................................................
    \Magento\Catalog\Model\ProductRepository $productRepository,
    .........................................................
) {
    .........................................................
    $this->productRepository = $productRepository;
    .........................................................
}
public function SetProductAttribute()
{
    $productId = "757";
    $attributeValue = '5641,5642';
    $product = $this->productRepository->getById($productId);
    $product->setCustomAttribute('multi_select_color_code', $attributeValue);
    //$product->setData('multi_select_color_code', $attributeValue);
    $this->productRepository->save($product);
}

I Hope This Helps You

I have the class below working at my end. In other words, way 2 is the way to go but this is assuming your custom attribute has the right setup. Also, you may notice below I am setting the area code to adminhtml

 class SaveProductAttribute extends Command
    {
        /**
         * @var ProductRepositoryInterface
         */
        private $productRepository;
        /**
         * @var \Magento\Framework\App\State
         */
        private $state;
    
        public function __construct(
            ProductRepositoryInterface $productRepository,
            \Magento\Framework\App\State $state,
            $name = null)
        {
            parent::__construct($name);
            $this->productRepository = $productRepository;
            $this->state = $state;
        }
    
        public function configure()
        {
            $this->setName('mbs:product_multiselect:save')
                ->setDescription('Save product multiselect value');
    
            $this->addArgument('sku', InputArgument::REQUIRED);
        }
    
        protected function execute(InputInterface $input, OutputInterface $output)
        {
            $this->initialiseAreaCode();
    
            $product = $this->productRepository->get($input->getArgument('sku'));
    
            $output->writeln(sprintf('sku: %s has activity: %s',
                $input->getArgument('sku'),
                $product->getData('activity'))
            );
    
            $product->setData('activity', [5432]);
            $this->productRepository->save($product);
    
            $output->writeln('attribute saved');
        }
    
        private function initialiseAreaCode(): void
        {
            try {
                $this->state->setAreaCode(Area::AREA_ADMINHTML);
            } catch (\Exception $e) {
    
            }
        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top