lighthouse in laravel 理解概念

    科技2026-06-15  2

    Lighthouse理解定义

    laravel 是一个小朋友。另一个小朋友叫 Lighthouse ,Lighthouse 带了另一个小朋友叫 Graphql ,然后三个开开心心玩在一起。laravel 借助 graphql 去查询 database

    Lighthouse 针对 graphql 封装了很多东西。比方说:directive,scalar,等等,还可以让你定制前面介绍的两个英文。当然可定制的更多,config 也可以搞搞。

    也有一个小朋友名字叫 mll-lab/laravel-graphql-playground,他是用来测试graphql接口的

    各事物理解

    先理解好各种东西是干嘛的,才能更好的使用他们

    命令

    (随便看看,其实还有更多命令)

    php artisan vendor:lighthouse --tag=lighthouse-schema 项目根目录生成graphyql文件夹。内有schema文件php artisan vendor:lighthouse --tag=lighthouse-config 根目录 /config 文件夹中生成 lighthouse.php 以配置 lighthouse。比方说配置命名空间(告诉Lighthouse哪里找什么东西),配置参数名称,etcphp artisan lighthouse:query QueryName 根据默认 /config 中 lighthouse.php 配置的话,此命令会在app/Graphql/Query 文件夹中生成 类。此类对应下面说到的 Field 的 Resolver。除了 lighthouse:query ,还可以是 lighthouse:mutation

    根节点

    QueryMutationsSubscription

    这几个节点暴露给 endpoint 终端使用。所用的查询,还有变更(增删改),使用到根节点内的 field (字段)。fields in root type

     

    Field  --  注意 resolver

    Type Query{ users:(name:String):User @all posts:[Post!]! @all } 字段名 name:users , posts 标 量 scalar :String 指 令 directive : @all field 指的就是这个name

    针对每一个 field ,被调用的时候都会调用对应的 resolver。通过resolver 获得数据。resolver 可以通过上面提及的命令生成。另一个选择是,通过 lighthouse ,结合它的指令进行具体操作

    1.通过 app/Graphql/Users.php 获得数据(对应上面 Query 中的 field:users)

    该文件定义resolver。当你没用 lighthouse的 声明(比方说directive,scalar那些),会调用这个你生成定义的 resolver 。 你用lighthouse的话,就会忽略你生成定义的 resolver,lighthouse 会帮你拿到 db 的数据。

     

    Schema

    Type

    分为三部分:

    name (名砸)field (节点内的属性)saclar (Int,String 等返回值,可自己定制。)

    Directive

    带有 @ 的,如 @all  @update 等等

     

    scalar

     

     

    明儿写

    Processed: 0.019, SQL: 9