[英]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.