简体   繁体   English

Laravel + Shopify Osiset productVariantUpdate GraphQL

[英]Laravel + Shopify Osiset productVariantUpdate GraphQL

I want update the prices of product variants in bulk using "osiset/Basic-Shopify-API" package.我想使用“osiset/Basic-Shopify-API”package 批量更新产品变体的价格。

This query works perfectly:此查询完美运行:

$variant['input']['id'] = "gid://shopify/ProductVariant/31576237899799";
$variant['input']['price'] = 1;

 $productVariant = $api->graph('
    mutation productVariantUpdate($input: ProductVariantInput!) 
        {productVariantUpdate(input: $input) {userErrors { field message }}}
    ',$variant);

Now I want to pass many product variants to mutation.现在我想将许多产品变体传递给突变。

I found this GraphQL query:我找到了这个 GraphQL 查询:

mutation{
  ProductVariant1: productVariantUpdate(input: {
    id: "gid://shopify/ProductVariant/27868413755001",
    price: 34.97
  }){
    productVariant{ id, price }
  }

  ProductVariant2: productVariantUpdate(input: {
    id: "gid://shopify/ProductVariant/27868413788000",
    price: 34.97
  }){
    productVariant{ id, price }
  }
}

So it should be possible to set variables to query like ProductVariant1: and pass arrays.所以应该可以设置变量来像ProductVariant1:并传递arrays。

How could I do it?我该怎么做?

I found a soloution.我找到了一个解决方案。 Maybe it helps anyone.也许它可以帮助任何人。

$variants[0]['id'] = "gid://shopify/ProductVariant/1";
        $variants[0]['price'] = 1;

        $variants[1]['id'] = "gid://shopify/ProductVariant/2";
        $variants[1]['price'] = 2;

        //build query
        $query = '';

        $countRun = 1;

        foreach($variants as $variant)
        {

            if($countRun == 1)
            {
                $query = 'mutation{
                    ProductVariant'.$countRun.': productVariantUpdate(input: {
                      id: "'.$variant['id'].'",
                      price: '.$variant['price'].'
                    }){
                      productVariant{ id, price }
                    }

                    ';
            }
            else{
                $query = $query.'ProductVariant'.$countRun.': productVariantUpdate(input: {
                    id: "'.$variant['id'].'",
                    price: '.$variant['price'].'
                  }){
                    productVariant{ id, price }
                  }

                  ';
            }

                $countRun++;
        }

        $query = $query.'}';

        $runQuery = $api->graph($query);

       return $runQuery;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM