Comments (2)
I need to see your classes... the query doesn't tell how you implemented it
from laravel-graphql.
I'm with difficult to use it
User model
public function posts () {
return $this->hasMany('App\Post');
}
UserType
public function fields()
{
return [
...
'posts' => [
'type' => Type::listOf(GraphQL::type('Post')),
'description' => 'List of post of user',
'resolver' => function (User $user) {
return $user->posts()->get();
}
],
'posts_count' => [
'type' => Type::int(),
'description' => 'Number of post by this user',
'resolver' => function (User $user) {
return $user->withCount('posts')->first()->posts_count;
}
]
];
}
What I'm doing wrong? I'm getting null on result
The relationship its okay it I use in another place, I even have done a test
class PostTest extends TestCase
{
public function testPostCount()
{
$this->assertEquals(1, User::find(1)->withCount('posts')->first()->posts_count, 'Should exist 1 post');
}
}
Update
I have found that the problem is on UsersQuery, but how can I make dynamic?
For example, if I add posts to query, graphQL executes and get list of array, but in this case of count, how can I do? The way I have done isn't dynamic
public function resolve($root, $args)
{
if (isset($args['id'])) {
return User::where('id' , $args['id'])->get();
} else if(isset($args['email'])) {
return User::where('email', $args['email'])->get();
} else {
return User::withCount('posts')->get();
}
}
Update 2
I got to make this work, but I'm doubt, to make this work I added to method resolve to do the query and removed from UserType the resolvers, but I'm in doubt why this worked
'posts' => [
'type' => Type::listOf(GraphQL::type('Post')),
'description' => 'List of post of user',
'resolver' => function (User $user) {
return $user->posts()->get();
}
],
and this not worked
'posts_count' => [
'type' => Type::int(),
'description' => 'Number of post by this user',
'resolver' => function (User $user) {
return $user->withCount('posts')->first()->posts_count;
}
]
So to make posts_count work I'm supposed to do this on UsersQuery
public function resolve($root, $args, $context, ResolveInfo $info)
{
$fields = $info->getFieldSelection($depth = 3);
$users = User::query();
foreach ($fields as $field => $keys) {
if ($field === 'posts_count') {
$users->withCount('posts');
}
if ($field === 'posts') {
$users->with('posts');
}
}
if (isset($args['id'])) {
return $users->where('id' , $args['id'])->get();
} else if(isset($args['email'])) {
return $users->where('email', $args['email'])->get();
}
return $users->get();
}
from laravel-graphql.
Related Issues (20)
- What does the parameters of resolve($root, $args, SelectFields $fields, ResolveInfo $info) method mean? HOT 1
- Create new release for laravel 5.7 to pin version HOT 2
- How to cache query result together with relations HOT 1
- Testing coverage with GraphQL is always return 0% HOT 2
- Could not publish configuration file HOT 14
- How to use GraphQL UnionType?? HOT 2
- Query Variables Empty HOT 3
- Laravel 5.7 support HOT 1
- how to set depth for each query HOT 1
- How to output paging data? HOT 2
- Help needed - resolve call to microservice(s) HOT 2
- passing some extra value from GraphQLController@query method to Folklore\GraphQL\Support\Mutation@resolve? HOT 8
- What is the format for config/graphql.php middleware array? HOT 1
- feature/relay branch add support to Laravel 5.7
- Create contracts Type to use in all Graph type
- default (abstract) queries and mutations "crud"
- How to pass meta data to the Type? HOT 1
- query and mutation executing twice HOT 2
- Not compatible with PHP 7.3 HOT 1
- GraphQL Error: Variable of type "String" used in position expecting type "String!" HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from laravel-graphql.