我正在使用 Lighthouse 构建一个库存应用程序,并努力掌握使用复杂逻辑按需提供自定义查询的概念。
这是我正在尝试创建的近似查询:
{
statsReport {
dailyTotalSales
dailyAverageSales
dailTotalItemsSold
newDailyCustomersCount
etc.
}
}
我正在考虑创建一个对象,它有不同的方法来聚集这些对象。我研究了创建自定义类型,就像这样
<?php
namespace App\Providers;
use GraphQL\Type\Definition\Type;
use Illuminate\Support\ServiceProvider;
use GraphQL\Type\Definition\ObjectType;
use Nuwave\Lighthouse\Schema\TypeRegistry;
class GraphQLServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @param TypeRegistry $typeRegistry
*
* @return void
* @throws \Nuwave\Lighthouse\Exceptions\DefinitionException
*/
public function boot(TypeRegistry $typeRegistry): void
{
$types = [
new ObjectType(
[
'name' => 'Stats',
'fields' => [
'dailyTotalSales' => [
'type' => Type::float(),
'description' => 'Daily Total Sales',
'resolve' => function() {
return $this->dailyTotalSales();
},
],
],
]
),
];
foreach ($types as $type) {
$typeRegistry->register($type);
}
}
public function dailyTotalSales()
{
return 1198.92
}
public function newDailyCustomersCount()
{
return 10
}
}
我注册了提供者但不知道如何查询这个类型?
还是我做错了,有更好的方法吗?
我必须以schema.graphql
某种方式添加它吗?
我可以创建一个自定义查询,但是我必须在__invoke
方法中同时要求所有统计信息,我宁愿按需进行。例如,如果我提出这样的请求
{
statsReport {
dailyTotalSales
newDailyCustomersCount
}
}
我会调用这两个方法执行。