Closed
Description
API Platform version(s) affected: "api-platform/api-pack": "^1.2",
Description
Fetching contacts from GooglePeopleApi and attempting to adding them to existing user.
Google provides an array of contacts.
I am following this comment from @dunglas #1645 (comment), and setting up a relation that share the same groups
on the denormalization context for the operation updateUser
.
I was expecting to be able to have the full Contact
entity as an input to updateUser
, but graphiql
will only expect an array of strings, ie, contacts: [String]
( see screenshot below)
How to reproduce
( only relevant code )
The USER entity :
* "update"={
* "security"="(is_granted('IS_AUTHENTICATED_FULLY') and object == user) or is_granted('ROLE_ADMIN')",
* "denormalization_context"={
* "groups"={"put-profile-change", "put-contacts", "put"}
* },
* "validation_groups"={"put-profile-change"}
* },
.....
/**
* @ORM\OneToMany(targetEntity="App\Entity\Contact", mappedBy="user")
* @Groups({"put", "put-contacts", "get-admin", "get-owner"})
*/
private $contacts;
The CONTACT entity:
* "create"={
* "security"="is_granted('IS_AUTHENTICATED_FULLY')",
* "denormalization_context"={"groups"={"post", "put", "put-contacts"}},
* "normalization_context"={"groups"={"get-owner", "get-admin"}},
* },
* "update"={
* "security"="(is_granted('IS_AUTHENTICATED_FULLY') and object == user) or is_granted('ROLE_ADMIN')",
* "denormalization_context"={
* "groups"={"put-contacts", "put"}
* },
* },
....
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"put", "put-contacts", "get-admin", "get-owner"})
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="contacts")
* @Groups({"post", "put", "put-contacts", "get-admin", "get-owner"})
*/
private $user;
/**
* @ORM\Column(type="string", length=180)
* @Groups({"post", "put", "put-contacts", "get-admin", "get-owner"})
*/
private $email;
Possible Solution
Metadata
Metadata
Assignees
Labels
No labels