4
我在doctrine2設置Category
OneToMany
Post
協會這樣的:Symfony2的JMSSerializerBundle反序列化實體
類別:
...
/**
* @ORM\OneToMany(targetEntity="Post", mappedBy="category")
* @Type("ArrayCollection<Platform\BlogBundle\Entity\Post>")
*/
protected $posts;
...
帖子:
...
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="posts")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
* @Type("Platform\BlogBundle\Entity\Category")
*/
protected $category;
...
我想反序列化以下json對象(數據庫中已存在id爲1的兩個實體)
{
"id":1,
"title":"Category 1",
"posts":[
{
"id":1
}
]
}
使用被配置JMSSerializerBundle串行器的反序列化方法與教義對象構造
jms_serializer.object_constructor:
alias: jms_serializer.doctrine_object_constructor
public: false
與以下結果:
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
}
]
}
}
哪個乍一看細。問題是,與Post
關聯的category
字段設置爲null
,導致persist()
沒有關聯。如果我嘗試反序列化這樣的:
{
"id":1,
"title":"Category 1",
"posts":[
{
"id":1
"category": {
"id":1
}
}
]
}
它工作正常,但是這不是我想做的事:(我懷疑的解決辦法是,以某種方式扭轉哪些實體保存的順序如果帖子被保存。第一類和第二,這應該工作。
如何保存這種關聯是否正確?