1、表字段名称为小写字母加下划线的形式。如图1
2、接口基于 GraphQL 实现,规范为接口响应的字段名称需为驼峰形式。
type ThemeAsset
{
"ID"
id: ID!
"主题ID"
themeId: String!,
"版本"
version: String!,
"内容"
content: String,
"路径,相对于主题的路径,如 ages/index.blade.php"
key: String!,
"MIME 类型"
mimeType: String!,
"类别,page、component、config(仅这3种类型有配置),asset、unknown"
category: String!,
"主题的 Schema,包括页面、主题、组件"
schema: String,
"创建时间"
createdAt: DateTime!
"更新时间"
updatedAt: DateTime
}
3、打印解析器 /Modules/ThemeStore/Resolver/OnlineStoreTheme/ThemeAssetsResolver.php 方法中的 $themeAssets,对象属性名称为小写字母加下划线的形式。如图2
<?php
namespace Modules/ThemeStore/Resolver/OnlineStoreTheme;
use Nuwave/Lighthouse/Support/Contracts/GraphQLContext;
use GraphQL/Type/Definition/ResolveInfo;
use Modules/ThemeStore/Entities/ThemeAsset;
class ThemeAssetsResolver
{
public function __invoke($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo)
{
$themeId = $rootValue['themeAssets']['theme_id'];
$themeAssets = ThemeAsset::where('theme_id', $themeId)->get();
print_r($themeAssets);
exit;
}
}
4、方案一为将 $themeAssets 进行 foreach 遍历,重新赋值给一个新的数组,在此数组中设置键名为驼峰形式。方案二为在 select 查询语句中重命名字段名为驼峰形式。最终决定采纳方案二。
public function __invoke($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo)
{
$themeId = $rootValue['themeAssets']['theme_id'];
$themeAssets = ThemeAsset::where('theme_id', $themeId)
->select(
'id',
'theme_id as themeId',
'version',
'content',
'asset_key as key',
'mime_type as mimeType',
'category',
'schema',
'created_at as createdAt',
'updated_at as updatedAt'
)
->get();
return $themeAssets;
}
5、请求接口,响应字段名为驼峰形式。符合预期。如图3
6、查看日志中的生成的原生 SQL 语句。如图4
select `id`, `theme_id` as `themeId`, `version`, `content`, `asset_key` as `key`, `mime_type` as `mimeType`, `category`, `schema`, `created_at` as `createdAt`, `updated_at` as `updated_at` from `theme_asset` where `theme_id` = 'vogue'
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/250315.html
