首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Laravel项目中从GraphQL模式调用一个雄辩的动态作用域(只有一个参数)?

在Laravel项目中,可以通过以下步骤从GraphQL模式调用一个雄辩的动态作用域:

  1. 首先,确保你的Laravel项目已经安装了Laravel GraphQL扩展包。你可以使用Composer命令进行安装:
代码语言:txt
复制
composer require rebing/graphql-laravel
  1. 安装完成后,在config/app.php文件中注册Laravel GraphQL服务提供者。找到providers数组并添加以下代码:
代码语言:txt
复制
Rebing\GraphQL\GraphQLServiceProvider::class,
  1. 创建一个GraphQL查询类型。在终端中执行以下命令来生成一个查询类型文件:
代码语言:txt
复制
php artisan make:graphql:type QueryType

这将在app/GraphQL/Types目录下生成一个QueryType.php文件。

  1. 在生成的QueryType.php文件中,定义GraphQL查询类型和其字段。在这里,你可以定义一个名为dynamicScope的字段,该字段接受一个参数作为动态作用域的输入。示例代码如下:
代码语言:txt
复制
namespace App\GraphQL\Types;

use GraphQL\Type\Definition\Type;
use Rebing\GraphQL\Support\Type as GraphQLType;

class QueryType extends GraphQLType
{
    protected $attributes = [
        'name' => 'Query',
        'description' => 'The root query type',
    ];

    public function fields(): array
    {
        return [
            'dynamicScope' => [
                'type' => Type::string(),
                'args' => [
                    'parameter' => [
                        'type' => Type::string(),
                    ],
                ],
                'resolve' => function ($root, $args) {
                    // 在这里实现你的雄辩动态作用域逻辑
                },
            ],
        ];
    }
}
  1. 创建一个GraphQL模式文件。在终端中执行以下命令来生成一个模式文件:
代码语言:txt
复制
php artisan make:graphql:mutation DynamicScopeMutation

这将在app/GraphQL/Mutations目录下生成一个DynamicScopeMutation.php文件。

  1. 在生成的DynamicScopeMutation.php文件中,定义GraphQL变动类型和其字段。示例代码如下:
代码语言:txt
复制
namespace App\GraphQL\Mutations;

use GraphQL\Type\Definition\Type;
use Rebing\GraphQL\Support\Mutation;
use Rebing\GraphQL\Support\Facades\GraphQL;

class DynamicScopeMutation extends Mutation
{
    protected $attributes = [
        'name' => 'DynamicScope',
        'description' => 'A mutation to call a dynamic eloquent scope',
    ];

    public function type(): Type
    {
        return Type::string();
    }

    public function args(): array
    {
        return [
            'parameter' => [
                'type' => Type::string(),
                'description' => 'The parameter for the dynamic scope',
            ],
        ];
    }

    public function resolve($root, $args)
    {
        // 在这里实现你的雄辩动态作用域逻辑
    }
}
  1. 定义GraphQL路由。在routes/graphql.php文件中,定义你的GraphQL查询和变动路由。示例代码如下:
代码语言:txt
复制
Route::group([
    'prefix' => 'graphql',
], function () {
    Route::post('/', [
        'as' => 'graphql.query',
        'uses' => '\Rebing\GraphQL\GraphQLController@query',
    ]);
    Route::post('/mutation', [
        'as' => 'graphql.mutation',
        'uses' => '\Rebing\GraphQL\GraphQLController@mutation',
    ]);
});
  1. 现在,你可以通过发送GraphQL请求来调用动态作用域。以下是一个示例GraphQL查询的请求体:
代码语言:txt
复制
{
    "query": "query {\n  dynamicScope(parameter: \"example\")\n}"
}

你可以将上述请求发送到/graphql路由。

以上是在Laravel项目中从GraphQL模式调用一个雄辩的动态作用域的步骤。请注意,这只是一个基本示例,你可以根据自己的需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 rhai、handlebars、graphql 开发 Rust web 前端(3)- rhai 脚本、资源文件、环境变量等

作为 Rust 的内嵌代码使用时,可以和原生 Rust 代码一样,调用其它 crate。尤其是,rhai 支持模块/库的动态加载、解析,并且支持最小构建。...类似于 Rust + JavaScript,且具有动态类型。 与 Rust 函数和类型紧密集成。 通过外部作用域,将 Rust 变量/常量无损传递到脚本中,无需实现任何特殊特性。...从 Rust 代码内,轻松调用脚本定义的函数。 很少的依赖项,实际必须具有的仅 2 个第三方 Rust crate。 动态:函数重载、运算符过载、函数指针可动态调度。 动态加载的模块,以组织代码库。...Rust web 项目中对 rhai 的使用,主要是在模板的渲染过程中。如作为模板内嵌助手脚本,对获取到的 API 数据进行计算。...let username = params[0]; username.len() 这个代码没什么需要解说的,如果一定要说点什么,那就是 params[0] 表示的含义是:由模板传入脚本的第一个参数,多个参数类推

58120

混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

这两种模式没有谁比谁好之分,只有适不适合之别: 简单的 CRUD、试水型的 Demo 项目,用 Active Records 模式的 ORM 框架更好 业务流程和规则较多的、成熟的项目改造用 Data...3.3 MVC架构 整个服务器的设计模式,就是经典的 MVC 架构,主要就是通过 Controller、Service、Model 、View 共同作用,形成了一套架构体系; ?.../docs/introduction.html 阅读一遍 接下来我们从接入开始,然后以如何创建一个 分页(Pagination) 功能为案例来演示在如何在 Midway 框架里使用 GraphQL,以及如何应用上述这些装饰器...案例:利用 GraphQL 实现分页功能 5.1 分页的数据结构 从使用者角度来,我们希望传递的参数只有两个 pageNo 和 pageSize ,比如我想访问第 2 页、每页返回 10 条内容,入参格式就是...到这里一个简单的 GraphQL 分页功能就开发完毕,从流程步骤来看,一路下来几乎都是装饰器语法,整个编写过程干净利落,很利于后期的扩展和维护。 6.

3.3K20
  • Rust 和 Wasm 的融合,使用 yew 构建 web 前端(4)- 获取 GraphQL 数据并解析

    今天,我们介绍如何在 yew 开发的 wasm 前端应用中,与后端进行数据交互。我们的后端提供了 GraphQL 服务,让我们获取 GraphQL 数据并解析吧!...wasm 需要绑定 web API,以发起请求调用和接受响应数据,需要使用 web-sys,但其可以通过 yew 库路径引入,无需加入到依赖项。...然后,在 frontend-yew/graphql 文件夹中创建一个新的文件 all_projects.graphql,描述我们要查询的项目数据。...} } 最后,在 frontend-yew/graphql 文件夹中创建一个新的文件 all_users.graphql,描述我们要查询的用户数据。...,可以实现与查询描述文件(如 all_users.graphql)中查询同名的结构体。

    8.1K30

    GraphQL最突出的架构优势是什么?

    在本文中,我们将讨论在未来或现有的项目中使用 GraphQL 都将享受哪些架构优势。 1六边形架构 Alistair Cockburn 在“六边形架构”中提到,我们架构的最内层是应用程序和域层。...最后,它将我们的关注点转向了应用程序和特定于域的内容。这些内容是不能直接从市场购买或下载的。 2基础架构组件 GraphQL 服务器和 HTTP 服务器都属于基础架构组件。...,我们可以使用 @client 指令来引用要基于一个客户端模式从本地缓存中获取的属性。...路由 + 方法组合 请求形式 + 参数 路由 + 方法组合 的一个例子是,某人可以很简单地将 创建一个用户 的操作从 POST /users 移至 POST /users/new。...请求形式 + 参数 的一个例子是,一个对 /users/new 的 POST 请求过去只需要一个 email 和一个 password,但现在它还需要一个 username 属性。

    2.2K20

    Laravel框架关键技术解析

    )即一个没有指定名称的函数,经常用做回调函数(callback)参数的值 2.匿名函数既可以作为参数传递给函数,也可以做为变量赋值,进而控制函数的执行过程;可以从父作用域中继承变量,使用use关键字来继承...,但同时也引入 了另一个严重的问题——耦合 3.不应该在类的内部固化实例的初始化行为,而是转由外部负责,在系统运行期间,将这种依赖关系通过动态注入的方式实现,这就是IOC模式的设计思想 4.IOC(Inversion...控制反转是将组件间的依赖关系从程序内部提到外部容器来管理,而依赖注入是指组件依赖通过外部以参数或其他形式注入,两种说法本质上是一个意思 5.Laravel中:Illuminate\Container\Container...B.请求处理管道简介 1.装饰者模式:是在开放—关闭原则下实现动态添加或减少功能的一种方式。...-->>调用实例中的bootstrap()-->>调用服务容器中的registerConfiguredProviders(),从配置文件中提取所有的服务提供者 3.缓载服务提供者:对于不是每个请求都需要使用的服务只有在需要时才临时进行服务绑定

    12K20

    BI仪表板数据可视化大屏

    因此要实现BI大屏,主要根据我们的实际需求决定整体的开发工作量。本次,我们就用Wyn Enterprise 作为实例,为大家演示如何在.Net Core项目中实现BI可视化的应用集成。...URL集成 在.Net Core项目中使用最多的集成方式是URL集成,这种集成方式的核心是设置一个带参数(QueryString)的网址(URL),作为业务系统中某个菜单链接的目标地址,或者是作为业务系统页面中某个...API,这样几乎所有界面操作均可通过调用API完成,例如在门户页面中展开某个分类下的文档列表时,通过浏览器调试窗格就可以看到实际的GraphQL API调用。...操作方法 所有API调用详解,请参考: https://wyn.grapecity.com.cn/WynApiDemo/ API调用示例,如下图: image.png 与REST API不同,GraphQL...不同对象的不同操作,都是通过一个统一的URL(http://localhost:51980/api/graphql)进行调用;不同的是提交的数据不一样。

    8.3K10

    当.Net撞上BI可视化,这3种“套路”你必须知道

    因此要实现BI大屏,主要根据我们的实际需求决定整体的开发工作量。本次,我们就用Wyn Enterprise 作为实例,为大家演示如何在.Net Core项目中实现BI可视化的应用集成。...URL集成 在.Net Core项目中使用最多的集成方式是URL集成,这种集成方式的核心是设置一个带参数(QueryString)的网址(URL),作为业务系统中某个菜单链接的目标地址,或者是作为业务系统页面中某个...API,这样几乎所有界面操作均可通过调用API完成,例如在门户页面中展开某个分类下的文档列表时,通过浏览器调试窗格就可以看到实际的GraphQL API调用。...操作方法 所有API调用详解,请参考: https://wyn.grapecity.com.cn/WynApiDemo/ API调用示例,如下图: 与REST API不同,GraphQL API不需要为不同的对象操作提供不同的...不同对象的不同操作,都是通过一个统一的URL(http://localhost:51980/api/graphql)进行调用;不同的是提交的数据不一样。

    3.1K20

    通过 Request 对象实例获取用户请求数据

    作为一门主要用于构建 Web 网站的动态语言,PHP 不仅可以处理静态页面,更重要的功能是处理用户动态请求,这才是一个 Web 2.0 网站最灵动的部分,从留言板到博客评论、到形形色色的社交网站、问答网站...而作为最流行的 PHP 框架,Laravel 自然也是为处理用户请求提供了丰富的工具集,从收集、验证、到过滤、编排,可谓是一应俱全,接下来,我们将通过三四篇教程的篇幅来为你详细介绍如何在 Laravel...项目中处理用户请求,首先,我们从收集用户请求数据开始。...: Route::post('form', 'RequestController@form'); 注:除此之外,Laravel 还提供了 Request 门面和全局辅助函数 request(),本质都是调用...'); 获取数组输入字段值 有的时候,我们在表单中传递给后端的可能是一个数组,比如一些复选框选中项,这些表单输入框的 name 值通常是 name[],如 books[],这个时候传递到后端的 books

    19.8K30

    干货 | 携程基于 GraphQL 的前端 BFF 服务开发实践

    所有面向外部用户的 GraphQL 服务,我们会限制只能调用其他后端 API,以避免出现密集计算或者架构复杂的情况。只有面向内部用户的服务,才允许 GraphQL 服务直接访问数据库或者缓存。...这种实践模式,只能有限发挥 GraphQL 合并请求、裁剪数据集的作用。它仍然是面向数据接口,而非面向数据网络的。...如此无限堆砌数据接口,最终仍然是一个发散的模型,每增加一个数据消费场景需求,就追加一个接口字段。并且,当某些接口字段的参数,依赖其它接口的返回值,常常得重新发起一次 GraphQL 请求。...这种将串行调用从客户端移到服务端的做法可以有效的降低端到端的次数,是 BFF 层常见的优化手段。但是如果我们有多个节点一起查询时,可能会出现同一个接口被调用多次的问题。...子节点调用 load(arg) 方法将参数添加到 loader 里,父节点的 loader 根据“积累”的参数,发起真正的请求,并将结果分别下发对应地子节点。

    2.6K20

    GraphQL-BFF:微服务背景下的前后端数据交互方案

    如果只有一个 boolean 类型的参数,只能满足 true | false 两种场景罢了。 以产品详情接口为例,一种很自然的请求参数结构如下: ?...我们可以做一个思想实验。 假设你是一名架构师,你接到一项任务,设计一门前端友好的查询语言。...当然,也可以调用 RPC 或者 ORM 等方式,从别的数据接口或者数据库里获取数据。 因此,实现一个 GraphQL 服务,并不需要挑战当前整个后端体系。...举个例子: 前端需要产品数据时,从之前调用产品相关的 RESTful API,变成查询产品相关的 GraphQL。不过,需要订单相关的数据时,可能要查询另一个 GraphQL 服务。...然而,在更复杂的真实项目中,我们实际上需要 express、koa 等服务端框架,用中间件的模式编写我们的服务端处理逻辑,由框架将它们整合为一个requestListener 函数,注册到 http.createServer

    3.8K72

    【前端必看】2017 年 JavaScript 全面崛起大运势

    少即是多 在三巨头之后,能非常有趣的发现第四名 Preact。 Preact 是一个 React 的小型替代解决方案:有相同的 API,却只有 3KB 的大小。...但和其他语言都有事实上的标准不同(如 Ruby 有 Ruby on Rails,Python 有 Django,PHP 有 Laravel),目前在 Node.js 上写服务端程序还没有一个大家都认可的标准框架...作为 Create React App 的一个成功案例,我们可以看 StackBlitz,这是一个在线 IDE,通过 Create React App,让你可以在数秒内从浏览器中创建一个应用。...想为语言添加新的特性……比如“类型检查”。 有一个很热门的问题可以用来区分程序员:你是用类型的,还是不用类型的? JavaScript 本身带有基本的动态类型,但缺乏静态类型。...GraphQL 在未来回顾 GraphQL 的历史时,2017 年很有可能会成为一个转折点。

    2.7K50

    干货 | 万字长文全面解析GraphQL,携程微服务背景下的前后端数据交互方案

    如果只有一个 boolean 类型的参数,只能满足 true | false 两种场景罢了。 以产品详情接口为例,一种很自然的请求参数结构如下: ?...我们可以做一个思想实验。 假设你是一名架构师,你接到一项任务,设计一门前端友好的查询语言。...当然,也可以调用 RPC 或者 ORM 等方式,从别的数据接口或者数据库里获取数据。 因此,实现一个 GraphQL 服务,并不需要挑战当前整个后端体系。...举个例子: 前端需要产品数据时,从之前调用产品相关的 RESTful API,变成查询产品相关的 GraphQL。不过,需要订单相关的数据时,可能要查询另一个 GraphQL 服务。...然而,在更复杂的真实项目中,我们实际上需要 express、koa 等服务端框架,用中间件的模式编写我们的服务端处理逻辑,由框架将它们整合为一个requestListener 函数,注册到 http.createServer

    3.8K21

    GraphQL-BFF:微服务背景下的前后端数据交互方案

    如果只有一个 boolean 类型的参数,只能满足 true | false 两种场景罢了。 以产品详情接口为例,一种很自然的请求参数结构如下: ?...我们可以做一个思想实验。 假设你是一名架构师,你接到一项任务,设计一门前端友好的查询语言。...当然,也可以调用 RPC 或者 ORM 等方式,从别的数据接口或者数据库里获取数据。 因此,实现一个 GraphQL 服务,并不需要挑战当前整个后端体系。...举个例子: 前端需要产品数据时,从之前调用产品相关的 RESTful API,变成查询产品相关的 GraphQL。不过,需要订单相关的数据时,可能要查询另一个 GraphQL 服务。...然而,在更复杂的真实项目中,我们实际上需要 express、koa 等服务端框架,用中间件的模式编写我们的服务端处理逻辑,由框架将它们整合为一个requestListener 函数,注册到 http.createServer

    1.6K20

    从Ruby到Node:重写Shopify CLI,提升开发体验

    如果将 Ruby 作为一个依赖项,这种思维模式就会被打破,他们就很容易遇到 CLI 因为需要额外的步骤而拒绝运行的问题。...在基于框架(如 Rails)的项目中,框架(如 MVC)通常会支持这些模式,但我们没有框架。因此,我们必须开发自己的模式和机制,并保证开发人员遵循它们。...只有少数情况下,为了符合语言要求,我们才诉诸于类,如错误类型。...命令(View):是用户进行交互的界面,用户在调用 CLI 时会传递参数和标志。它们的职责仅限于解析和验证参数及标志,并提供帮助菜单的内容。 服务(Controller):是业务逻辑的封装单元。...一个例子是与 Shopify GraphQL API 交互的所有函数。 5. 实现端到端测试策略 采用函数式编程和最小化副作用简化了单元测试的编写。

    46120

    在 Laravel Eloquent 模型类中使用作用域进行查询

    「Scope」字面意义上翻译为「作用域」,有点不那么好理解,从功能上来说,把它看作预置的「过滤器」更合适。...从调用方式或者过滤器的作用范围来说,可以把「作用域」分为「全局作用域」和「局部作用域」。「作用域」都是围绕模型类展开的,不管是全局作用域还是局部作用域,都是作用到某个模型类上。...接下来,我们就来演示如何在 Eloquent 模型类上使用「作用域」进行查询。...动态作用域 此外,Eloquent 模型类还支持「动态作用域」,所谓动态作用域指的是在查询过程中动态设置预置过滤器的查询条件,动态作用域和局部作用域类似,过滤器方法名同样以 scope 开头,只不过可以通过额外参数指定查询条件...`deleted_at` is null 动态作用域的调用和移除方式和局部作用域一样。 本系列教程首发在Laravel学院(laravelacademy.org)

    2.5K20

    API接口架构REST vs GraphQL

    通过访问一个 URL, 就实现了对接口的调用处理。 REST 案例 假设你正在创建一个博客站点, 在首页上,你会显示最新文章的摘要,包括标题、图片和简短描述。...与 REST 不同,GraphQL 需要一个模式来告诉客户端和服务器通过 API 允许哪些数据和操作。这些是用 GraphQL 模式语言定义的,它是一种与语言无关的具有强大的类型系统的格式。...模式的另一个重要用途是定义操作,包括读取数据的查询和写入数据。...使用 GraphQL,可以从模式中删除不推荐使用的字段,而不会影响现有查询。这为应用程序提供了对新功能的持续访问,并鼓励更清洁、更可维护的代码。...GraphQL 通过提供严格类型化的模式语言来解决这些问题,接口调用者可以根据自己的需要进行查询。 如果未来能有更好的设计将两者的优点结合,我相信会是最佳的解决方案。

    1.6K30

    3分钟短文:Laravel 编程中优雅地添加定义常量

    引言 laravel妥妥的到处都是面向对象了,以前流程处理的PHP代码,很少见到踪影了, 为什么?大型应用实在是难以维护,所有代码设计必须有规有矩了。今天我们说一说, 如何在代码中定义常量。 ?...比较好的一个实践, 是把这些配置参数,写在配置文件内,然后使用laravel框架提供的 Config 类,读取这些数据。...所有在程序的任何地方,都可以像下面这样调用: Config::get('constants.options'); Config::get('constants.options.option_attachment...唯一需要注意的是,你得记得住键名。 类的属性 在面向对象代码中,如果常量类型数据作用域仅限于某个类,及其继承者, 那么可以将这部分数据定义为类的属性,提供后续访问。...如果全局的常量,我们推荐写到配置文件;如果是局部作用的常量,我们推荐写到类属性内。 Happy coding :-) 我是@程序员小助手,持续分享编程知识,欢迎关注。

    1.1K20

    Api 开发之include机制

    概述 include英译:包含,包括,使成为...的一部分 我们在进行API开发时可能会将数据以及与该数据相关的数据全部发送给客户端,如 文章数据,相关的数据有“用户”,“分类”......可以看到,除了返回文章相关数据外,还返回了用户相关数据 这样做不太友好,因为我们不知道客户端是否需要某些数据,如这里的“用户”。...} 这里主要设计到两个方法 allowedIncludes:指定可被include的参数 客户端输入 include=user 可动态返回文章,用户的信息 include=user,category...的文章 AllowedFilter::exact('category_id'):表示精确过滤的字段 我们还可以键入某个scope(查询作用域)对数据进一步过滤,本文使用了定义好的withOrder作用域...,传递默认参数 ]) ->paginate(); 解决办法:为每个模型类添加一个Queries类 在这个Queries类里面键入上面逻辑,控制器使用时只需将该类依赖注入即可

    1.3K10

    php基础(一)

    static 静态方法,是类的成员方法,但不需要实例化类可直接使用 $GLOBAL 在函数内使用具有全局作用域的变量,如$GLOBAL['a'] 2.子类重写父类的 protected 方法有什么限制?...CGI,通用网关接口,用于WEB服务器和应用程序间的交互,定义输入输出规范,用户的请求通过WEB服务器转发给FastCGI进程,FastCGI进程再调用应用程序进行处理,如php解析器,应用程序的处理结果如...9.列举常用的设计模式并说明?单例模式,观察者模式等等 单例模式 10.写一段代码,实现PHP内部的通知机制,如当一个类的属性发生变化时,另外一个类就可以收到通知。...$(document).ready()函数作用域是什么? 形成闭包,起到隔离作用域的作用。...JSONP 的原理 AJAX 无法跨域是受到“同源政策”的限制,但是带有src属性的标签(例如、、)是不受该政策限制的,因此我们可以通过向页面中动态添加<script

    2.1K20

    GraphQL 初体验,Node.js 构建 GraphQL API 指南

    仅提供一个端点来查询所需的所有域逻辑。...另一部分涉及实际获取数据,这是通过使用解析器完成的,解析器是一个返回字段基础值的函数。 让我们看一下如何在 Node.js 中实现解析器。...} } } 这个解析器需要两个参数:一个代表父的对象(在最初的根查询中,这个对象通常是未使用的),一个包含传递给你的字段的参数的 JSON 对象。...给定一个 ID 数组,我们将一次性从数据库中获取所有这些 ID;同样,后续对同一 ID 的调用也将从缓存中获取该项目。要使用 dataloader 来构建这些,我们需要两样东西。...最佳实践 GraphQL 规范中缺少的一个方面是缺乏对版本控制模式的指导。

    8.3K40
    领券