Laravel + Shopify Osiset产品变体更新GraphQL

时间:2020-06-11 08:52:54

标签: php laravel graphql shopify

我想使用“ osiset / Basic-Shopify-API”软件包批量更新产品型号的价格。

此查询可完美运行:

$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);

现在我想将许多产品变体传递给突变。

我找到了这个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 }
  }
}

因此应该可以设置变量进行查询,例如 ProductVariant1:并传递数组。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我找到了一个东西。也许对任何人都有帮助。

$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;