Je Category
OneToMany
Post
association dans la configuration de Doctrine2 comme ceci:Symfony2 JMSSerializerBundle entité deserialize avec l'association OneToMany
Catégorie:
...
/**
* @ORM\OneToMany(targetEntity="Post", mappedBy="category")
* @Type("ArrayCollection<Platform\BlogBundle\Entity\Post>")
*/
protected $posts;
...
Poste:
...
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="posts")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
* @Type("Platform\BlogBundle\Entity\Category")
*/
protected $category;
...
Je suis en train de désérialiser suivant objet json (les deux entités avec l'ID de 1 existent déjà dans la base de données)
{
"id":1,
"title":"Category 1",
"posts":[
{
"id":1
}
]
}
en utilisant la méthode de désérialisation de JMSSerializerBundle sérialiseur configuré avec constructeur d'objet doctrine
jms_serializer.object_constructor:
alias: jms_serializer.doctrine_object_constructor
public: false
avec le résultat suivant:
Platform\BlogBundle\Entity\Category {#2309
#id: 1
#title: "Category 1"
#posts: Doctrine\Common\Collections\ArrayCollection {#2314
-elements: array:1 [
0 => Platform\BlogBundle\Entity\Post {#2524
#id: 1
#title: "Post 1"
#content: "post 1 content"
#category: null
}
]
}
}
qui est bien à première vue. Le problème est que Post
associé a category
champ défini sur null
, ce qui entraîne aucune association sur persist()
. Si je tente de désérialiser ceci:
{
"id":1,
"title":"Category 1",
"posts":[
{
"id":1
"category": {
"id":1
}
}
]
}
il fonctionne très bien mais ce n'est pas ce que je veux faire :(Je pense que la solution pourrait consister à inverser en quelque sorte l'ordre dans lequel les entités sont enregistrées si le poste a été acceptée. première et deuxième catégorie, cela devrait fonctionner.
Comment enregistrer cette association correctement?