【问题标题】:Add stock data on product programatically in Magento 2在 Magento 2 中以编程方式添加产品的库存数据
【发布时间】:2018-03-08 13:31:19
【问题描述】:

我想在产品上添加库存数据,但它不起作用。在我的功能中,我有一个由以下人员创建的产品:

$product = $objectManager->create('Magento\Catalog\Model\Product');

然后,我设置了一些数据,例如价格、状态、名称……最后,我为股票添加了代码:

$product->setStockData(array(
                'use_config_manage_stock' => (bool)0, //'Use config settings' checkbox
                'manage_stock' => (bool)1, //manage stock
                'min_sale_qty' => 0, //Minimum Qty Allowed in Shopping Cart
                'max_sale_qty' => 0, //Maximum Qty Allowed in Shopping Cart
                'is_in_stock' => (bool)1, //Stock Availability
                'qty' => 0 //qty
                )
            );

我不希望产品继承配置设置,我绝对想要一个不同于 null(0 或更大)的数量。

但是,当功能启动时,产品被创建,除了库存数据之外的所有数据都可以。

【问题讨论】:

  • 如果您在这里没有得到正确的答案,您可以去magento.stackexchange.com 并在那里尝试,只是一个提示。

标签: php magento2


【解决方案1】:

试试下面的代码,它对我有用

       public function __construct(
           \Magento\Catalog\Model\ProductFactory $productFactory
       ) {
       $this->productFactory = $productFactory;
        }

       public function updateQty(){
       $sku = 'xxxxxxxxx';
       $product = $this->productFactory->create();
       $productId = $product->getIdBySku($sku);
      if($productId){
      $product->load($productId);
      }
       $product->setStockData(
    array(
        'use_config_manage_stock' => 0,
        'manage_stock' => 1,
        'is_in_stock' => 1,
        'qty' => 10
       )
      );

     $product->save(); 
     }

【讨论】:

    【解决方案2】:

    如果属性“管理库存”设置为是,您能否在后端系统设置中检查,这是路径:商店 => 配置 => 目录 => 库存 => 管理库存

    【讨论】:

    • 设置为是:/
    【解决方案3】:

    public function __construct(
        \Magento\Catalog\Model\ProductFactory $productFactory
    ) {
        $this->productFactory = $productFactory;
    }
    
    public function updateQty(){
        $sku = '24-mb01';
        $product = $this->productFactory->create();
        $productId = $product->getIdBySku($sku);
        if($productId){
            $product->load($productId);
        }
    
        $product->setStockData(
            array(
                'use_config_manage_stock' => 0,
                'manage_stock' => 1,
                'is_in_stock' => 1,
                'qty' => 10
            )
        );
    
        try {
            $product->save(); 
            echo $sku.' updated. '; 
        } catch (Exception $e) {
            echo $e->getException();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-14
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      相关资源
      最近更新 更多