我实现一个REST API与FOSRestBundle和我所遇到的与现有实体(PUT)的修改问题
我有一个类学生与有多对一关系
/**
* @JMS\MaxDepth(2)
* @ORM\ManyToOne(targetEntity="ClassRoom", inversedBy="students")
* @ORM\JoinColumn(name="classroom_id", referencedColumnName="id")
*/
protected $classRoom;
当执行PUT动作,我只收到属性的值,因为我不想让用户通过PUT请求修改关系。 这是一个接收到的数据的例子。
{
"id": 3,
"name": "pelayo",
"second_name": "ramon",
"last_name": "fernandez",
"birthday": "1983-08-15T00:00:00+0200"
}
数据获取与JMS串行至极反序列化设置$教室属性为null,因为它没有接收到的数据中找到它。
当执行合并
$student2 = $this->get('doctrine')->getManager()->merge($student);
如果STUDENT2得到坚持用教室当前关系会从数据库中,因为合并设置的关系为null删除。
这种行为可以通过检索当前的教室,并用手在合并之前将其设置为反序列化实体被躲闪,但是这是丑陋的。
有没有办法告诉学说,从分离的一个忽略合并的属性,使其始终使用储值?