我有一个如下所示的GraphQL查询:

$query = <<<'JSON'
query{
   mainProducts(where:{productType:{eq:2}}) {
       name, productID
   }
}
JSON;
$variables = '';

$json = json_encode(['query' => $query, 'variables' => $variables]);

$chObj = curl_init();
curl_setopt($chObj, CURLOPT_URL, ‘https://whateverurlitis.com’);
curl_setopt($chObj, CURLOPT_RETURNTRANSFER, true);    
curl_setopt($chObj, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($chObj, CURLOPT_HEADER, true);
curl_setopt($chObj, CURLOPT_VERBOSE, true);
curl_setopt($chObj, CURLOPT_POSTFIELDS, $json);
curl_setopt($chObj, CURLOPT_HTTPHEADER,
     array(
            'Content-Type: application/json;charset=utf-8',
            'Authorization: bearer '.MYTOKEN 
        )
    ); 

$response = curl_exec($chObj);
echo $response;

我的问题是,目前我需要用一个变量替换查询参数,使其成为动态的,该变量可以是一个数字或数字数组,我需要循环它们.

有人能告诉我如何用变量来代替数字2吗?

推荐答案

首先,没有必要在either a number or array of numbers之间进行区分.如果只有一个数字,您可以只传递一个带有一个数字的array.这将使您的模式更简单.

为了将动态变量添加到查询中,您需要重做查询以允许传递变量.以下几点应该能起到作用:

query MainProducts($productTypes: [Int!]!) {
   mainProducts(where:{productType:{eq:$productTypes}}) {
       name, productID
   }
}

这样,您将能够传递[Int!]!类型的productTypes个变量,这是一个整数array.

现在,剩下的就是将产品类型ID作为变量传递给查询:

$variables = [1,2,3];

您可以阅读有关向查询here传递参数的更多信息.

Php相关问答推荐

在没有symfony应用程序的情况下使用安全Bundle 包时,缺少配置构建器类

Laravel关系-为用户获取属于组织的所有团队

从订单项目中获取ACF WooCommerce产品价值

如何使用php一次更新两个数据库中的MySQL表

Apache只允许index.php-不从根目录工作

根据WooCommerce中的客户计费国家/地区更改产品价格

从AJAX响应中获取一个未定义的html

Laravel Http::get not working on controller

在WooCommerce管理中为订单项目添加自定义字段价格值

Regex:高级删除单行PHP注释

WordPress:今天的计数';修改和发布的帖子

Laravel处理belongToMany和额外字段

dyld[45923]:未加载库:/usr/local/opt/libavif/lib/libavif.15dylib

$this->;db->;update();CodIgnitor中的功能不工作

重命名 WordPress 中现有的自定义分类法名称和标签

使用 phpseclib 验证 RSA-PSS

在WooCommerce可变产品中显示所选变体的自定义字段

如何在运行 update_post_meta 后更新 wp_wc_product_attributes_lookup 表?

PHP获取根据辞职日期自动续订的合同终止日期

如何将 2021-04-08T22:25:09.335541Z 作为时间戳保存到 Laravel 中的数据库中?