我有一条PUT路由,用请求数据更新用户实体。这有效,但我不得不在这个实体上调用setter,但我认为可能有更好的方法,可以直接应用请求数据,而无需为每个字段调用setter。我在使用Doctrine。这是我的示例代码:
$data = $this->getRequest()->request->all();
$em = $this->getDoctrine()->getManager();
$entity = new Entity();
$entity = $em->getRepository('SomeBundle:Entity')->find($id);
$entity->setParamA($data['A']);
// ... etc
if (!empty($entity))
{
$em->persist($entity) // flush, etc. I have also tried merge but it removes existing fields
}
如何在不调用setter的情况下简单地使用$ data更新$ entity?如果我有一百个字段,那么手动调用setter是没有意义的,如果还有更多字段会怎么样?