繁体   English   中英

如何使用 PHP 中的变量创建动态 GraphQL 查询?

[英]How to create a dynamic GraphQL query using variables in PHP?

我有一个看起来像这样的 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;

我的问题是,目前我需要用变量替换查询参数以使其动态化,并且变量可以是数字或数字数组,我需要循环它们。

有人可以告诉我如何用变量替换productType的数字 2 吗?

首先,无需区分either a number or array of numbers 如果它只是一个数字,您可以只传递一个带有一个数字的数组。 这将使您的架构更简单。

为了向查询中添加动态变量,您需要重做查询以允许传递变量。 以下应该可以解决问题:

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

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

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

$variables = [1,2,3];

您可以在此处阅读有关将 arguments 传递给查询的更多信息。

暂无
暂无

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

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