1.使用Laravel Graphql的擴充套件支援直接新增rules()方法進行資料的驗證:
class ConfigMutation extends Mutation
{
protected $attributes = [
'name' => 'ConfigMutation',
'description' => 'A mutation of Config'
];
public function type()
{
return Type::boolean();
}
public function rules()
{
return [
/*驗證----------->start*/
'config.aaa' => 'required|array',
]
}
}
2.如歌輸入的資料是多層巢狀的json該怎麼在args()方法中定義對應的欄位呢?目前我使用的是InputObjectType
public function args()
{
return [
'AAA_id' => [
'name' => 'AAA_id', 'type' => Type::nonNull(Type::int()), 'description' => 'AAAid'\
],
'type' => [
'name' => 'type', 'type' => Type::nonNull(GraphQL::type('TypeEnum')), 'description' => '選擇的平臺'\
],
'config' => [
'name' => 'config', 'type' => Type::nonNull($config), 'description' => '配置'\
]
];
}
上面的config是一個複雜的json資料,每個key對應的值有可能是基本的型別,也有可能是陣列,此時可以這樣:
$config = new InputObjectType([
'name' => 'ConfigFiltersInput',
'fields' => [
'aa_info' => [
'name' => 'aa_info', 'type' => Type::nonNull($setting), 'description' => 'aaa資訊'
],
'aaa_feature' => [
'name' => 'aaa_feature', 'type' => Type::nonNull($setting), 'description' => 'aaa特色'
],
'aaa_ranking' => [
'name' => 'aaa_ranking', 'type' => ($aaa_ranking), 'description' => 'aaa排行'
]
]
]);
上例中$setting也是一個InputObjectType,對應需要定義的資料
通過使用InputObjectType可以靈活處理所有複雜的輸入資料,同時如果輸入的資料是一個json中的陣列該如何處理呢?
'setting' => [
'name' => 'setting', 'type' => Type::nonNull(Type::listOf($filters)), 'description' => '許可權'
],
$filters是自己定義的InputObjectType,通過使用listOf可以處理陣列資料
本作品採用《CC 協議》,轉載必須註明作者和本文連結