问题标签 [graphql-php]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
181390 浏览

php - 如何在不编写长查询的情况下查询所有 GraphQL 类型字段?

假设您有一个 GraphQL 类型并且它包含许多字段。如何在不写下包含所有字段名称的长查询的情况下查询所有字段?

例如,如果我有这些字段:

要查询所有字段,通常查询是这样的:

但我想要一种无需编写所有字段即可获得相同结果的方法,如下所示:

有没有办法在 GraphQL 中做到这一点?

我正在使用Folkloreatelier/laravel-graphql库。

0 投票
1 回答
8834 浏览

php - GraphQL 响应中的自定义映射键

我一直在研究 GraphQL 作为我的一些 REST API 的替代品,虽然我认为我已经把自己的头脑围绕在基础知识上,并且就像我目前看到的大部分内容一样,但似乎缺少一个重要的特性。

假设我有一个这样的项目集合:

应用程序需要所有这些对象的映射,由 ID 索引,如下所示:

我曾经编写过的每个 API 都能够以这样的格式返回结果,但我正在努力寻找一种使用 GraphQL 的方法。我一直在运行issue 101,但这更多地涉及未知模式。就我而言,我确切地知道所有字段是什么;这纯粹是关于输出格式。我知道我可以简单地返回一个数组中的所有项目并在客户端重新格式化它,但这似乎有点过头了,因为过去从未需要它,并且会让 GraphQL 感觉像是倒退了一步。我不确定我想要做的事情是否不可能,或者我只是使用了所有错误的术语。我应该继续挖掘,还是 GraphQL 不适合我的需求?如果这是可能的,那么检索这样的数据的查询会是什么样子?

我目前正在服务器上使用graphql-php,但我对更高级别的概念响应持开放态度。

0 投票
1 回答
6919 浏览

php - php graphQl "字段 \"person\" 参数 \"id\" 类型为 \"ID!\" 是必需的,但未提供。",

我正在尝试通过那里的示例获取人员对象:https ://github.com/webonyx/graphql-php/tree/master/examples/01-blog

我应该如何调试这个?

索引控制器.php

PersonType.php

查询类型:

我正在发送查询:

为什么我收到这个错误?

0 投票
1 回答
665 浏览

zend-framework - zend 3,graphQL - 如何在 Types 类中使用工厂创建模型实例

目前我有这样的Types.php:

在 query() 函数中,它创建 QueryType 实例。我添加到 QueryType 构造函数 PersonTable 模型类,以便它可以从数据库中查询人员。

查询类型.php

我在 module\Application\src\Module.php 中设置了工厂:

我正在做这个没有任何框架的例子:

https://github.com/webonyx/graphql-php/tree/master/examples/01-blog

所以问题是 - 如何使用注入的 PersonTable 实例创建 queryType 实例?我应该以某种方式从工厂获取 PersonTable 实例,但我不明白如何。

更新:

我决定尝试将 QueryType 注入控制器。创建了这样的功能:

现在 module\Application\src\Module.php getServiceConfig 看起来像这样:

但我得到错误:

可捕获的致命错误:传递给 Application\Controller\IndexController::__construct() 的参数 1 必须是 Application\GraphQL\Type\QueryType 的实例,没有给出,在 E:\projektai\php projektai\htdocs\graphQL_zend_3\vendor\ 中调用zendframework\zend-servicemanager\src\Factory\InvokableFactory.php 在第 32 行并在 E:\projektai\php projektai\htdocs\graphQL_zend_3\module\Application\src\Controller\IndexController.p 中定义

如果我在该功能中配置,怎么能不给出?

如果我可以注入控制器,那么我打算这样做:

所以我不需要调用返回 QueryType 实例的 query() 函数。

然后将 PersonTable 自动注入到 QueryType 类中。

更新:

我创建了工厂,类似于答案:

在 IndexController 我有构造函数:

在 Module.php 我使用这个工厂:

它根本不起作用,我收到错误:

可捕获的致命错误:传递给 Application\Controller\IndexController::__construct() 的参数 1 必须是 Application\GraphQL\Type\QueryType 的实例,没有给出,在 E:\projektai\php projektai\htdocs\graphQL_zend_3\vendor\ 中调用zendframework\zend-servicemanager\src\Factory\InvokableFactory.php 在第 32 行并在 E:\projektai\php projektai\htdocs\graphQL_zend_3\module\Application\src\Controller\IndexController.php 在线定义

我也尝试过这种方式:

但是 $queryTypeFactory() 需要参数 $container。这不是我想要的,我猜。我应该能够在不传递参数的情况下创建一个实例。

我希望可以在工厂数组中使用 QueryType::class 作为键。它将使用设置的全名空间创建:

在索引控制器中,我也称之为 use 语句。

0 投票
1 回答
499 浏览

php - php中的动态类方法名称

我正在使用graphql-php开展一个项目。有一个示例建议创建这样的类:

稍后我可以像这样使用此类方法:

Types::page()或者Types::category()

这工作正常。但是,我认为这是一种反模式,可以进行优化。随着项目的增长,类似函数和私有类字段的数量也在增长,这变得不方便。有什么方法可以重构类,这样我就不必为每种类型手动添加一个函数,但仍然像现在一样调用类方法?( Types::page())。

0 投票
0 回答
787 浏览

php - 访问根值和参数解析器 graphql-php

我在使用graphql-php库的代码的以下部分遇到问题。

当我运行查询时:

我收到以下列出的消息:

其次,当我运行嵌套查询时

我得到下面列出的响应:

以下是我的完整代码:

有人可以帮我解决这些问题。提前致谢

0 投票
1 回答
538 浏览

php - GraphQL PHP 完整查询路径

我正在尝试graphql-php在我的项目中实施授权。这个想法是有一个用户访问数组,我可以在其中为每个用户组设置对特定查询和突变的访问,并在执行查询之前在 graphql 控制器中实现检查访问方法。

一种方法是自己解析请求,但我想知道是否有人知道如何访问查询的完整路径,正如我所见,它显示在https://webonyx.github.io/graphql-php/错误处理/

0 投票
1 回答
618 浏览

reactjs - 将 Apollo 反应到不同端口上的 graphql-php 服务器

我正在尝试使用 Apollo 将我的 create-react-app 前端连接到我的 graphql-php 服务器。由于两者都在我的本地机器上的不同端口(分别为 3000 和 8080)上运行,我遇到了一些 CORS 问题。Apollo 正在发送一个 OPTIONS 请求,然后抛出一个控制台日志消息:

希望任何人都可以提供有关如何让这两个人互相交谈的任何帮助!

前端 Apollo 配置:

索引.php

0 投票
1 回答
524 浏览

php - 带有 laravel 和 graphql 的 api

laravel 打算使用 REST。控制器直接绑定到路由。然而,当 Graphql 出现时,整个逻辑发生了变化,查询和突变只是具有解析功能块。有没有办法将控制器绑定到 graphql 查询或/和突变?

0 投票
3 回答
1946 浏览

graphql - graphql-php 入门:如何将解析器函数从 .graphql 文件添加到模式?

我对 GraphQL 完全陌生,想玩一下 graphql-php 以构建一个简单的 API 来开始。我目前正在阅读文档并尝试示例,但我一开始就被卡住了。

我希望我的架构存储在一个schema.graphql文件中,而不是手动构建它,所以我按照文档说明了如何做到这一点,它确实有效:

这是我的schema.graphql文件的样子:

例如,我可以查询它

这将按预期返回元数据。但当然现在我想查询实际的产品数据并从数据库中获取,为此我需要定义一个解析器函数。

http://webonyx.github.io/graphql-php/type-system/type-language/上的文档状态:“默认情况下,这样的模式是在没有任何解析器的情况下创建的。我们必须依赖默认字段解析器和根值为了对此模式执行查询。” - 但没有这样做的例子。

如何为每个类型/字段添加解析器函数?