lighthouse in laravel 理解概念

Lighthouse理解定义

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

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

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

各事物理解

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

命令

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

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

根节点

  1. Query
  2. Mutations
  3. Subscription

这几个节点暴露给 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

分为三部分:

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

Directive

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

 

scalar

 

 

明儿写

你可能感兴趣的:(laravel,lighthouse,grapghql)