Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento2如何以编程方式更新产品信息(PHP脚本)?_Php_Magento2 - Fatal编程技术网

Magento2如何以编程方式更新产品信息(PHP脚本)?

Magento2如何以编程方式更新产品信息(PHP脚本)?,php,magento2,Php,Magento2,我试图按产品id更新所有产品信息,但对所有信息都不起作用。使用下面的代码“SKU”成功更新,但无法更新其他信息,如产品名称和其他自定义属性值 如何使用PHP脚本更新有关产品的所有信息 $productFactory = $objectManager->get('\Magento\Catalog\Model\ProductFactory'); $product = $productFactory->create()->setStoreId($storeId)->load($

我试图按产品id更新所有产品信息,但对所有信息都不起作用。使用下面的代码“SKU”成功更新,但无法更新其他信息,如产品名称和其他自定义属性值

如何使用PHP脚本更新有关产品的所有信息

$productFactory = $objectManager->get('\Magento\Catalog\Model\ProductFactory');
$product = $productFactory->create()->setStoreId($storeId)->load($product_id);
$product->setStatus(1);
$product->setName('test pr 123');
$product->setSku('test sku');
$product->setDescription("new product description.");
$product->setShortDescription("new short description.");
$product->save();

在这里,我添加了一个脚本,希望这将有助于解决您的问题

use Magento\Framework\App\Bootstrap;
require __DIR__ . 'app/bootstrap.php';

$params = $_SERVER;
$bootstrap = Bootstrap::create(BP, $params);
$objectManager = $bootstrap->getObjectManager();
$instance = \Magento\Framework\App\ObjectManager::getInstance();
$state = $objectManager->get('\Magento\Framework\App\State');
$state->setAreaCode('adminhtml');
$product_collections = $instance ->get('\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
$collections = $product_collections->create();
foreach ($collections as $product) {
    $id = $product->getId(); 
    $product = $objectManager->create('Magento\Catalog\Model\Product')->load($id);
    $product->setWebsiteIds(array(1));
    $product->save();
    echo $id.'-';
}

添加需要在代码中更新的属性

如果只想覆盖某些属性值,则应使用addAttributeUpdate函数。这样,您还可以更新不同存储视图的属性值

我使用一种代码来更新我的产品描述等

    $productRepository = $objectManager->get('Magento\Catalog\Model\ProductRepository');

    // YOU WANT TO LOAD BY ID?
    $id = "YOUR ID HERE";
    // YOU WANT TO LOAD BY SKU?
    $sku = "YOUR SKU HERE";

    if($id) {
        $product = $productRepository->getById($id);
    }
    if($sku) {
        $product = $productRepository->get($sku);
    }



    $shortDescriptionAttributeCode = "short_description";
    $descriptionAttributeCode      = "description";

    $shortDescriptionAttributeValue = "YOUR NEW VALUE";
    $descriptionAttributeValue      = "YOUR NEW VALUE";


    $product->addAttributeUpdate($shortDescriptionAttributeCode, $shortDescriptionAttributeValue, 0);
    $product->addAttributeUpdate($descriptionAttributeCode, $descriptionAttributeValue, 0);

我认为类似于$product->setData('description',“新产品描述”);我们应该做到这一点。