我在会话中存储实体:
$equipoActividad = new EquiposActividades();
$equipoActividad->setEquipoControl($equipoControlExiste);
$actividadObj=$em->getRepository('AgcManagerBundle:Actividad')->findOneBy(array('idActividad'=>$idActividad));
$equipoActividad->setActividad($actividadObj);
$equipoActividad->setIdUsuario($user->getIdUser());
$tipoTransmision = new TipoTransmision();
$tipoTransmision->setIdTipoTransmision(0);
$protocolo = new Protocolo();
$protocolo->setIdProtocolo(0);
$equipoActividad->setTipoTransmision($tipoTransmision);
$equipoActividad->setProtocolo($protocolo);
$request->getSession()->set("equipoActividad", $equipoActividad);
将此实体存储到新实体后:
$equipoActividad = new EquiposActividades();
$equipoActividad = $request->getSession()->get("equipoActividad");
这是错误:
必须管理传递到选择字段的实体。也许坚持他们在实体经理?
更新:
$equipoActividad = $request->getSession()->get("equipoActividad");
$equipoActividad = $em->merge($equipoActividad);
/* The next code is this*/
$formulario = $this->createForm(new EquipoActividadType(array('idUsuario' => $user->getIdUser())), $equipoActividad);
$formulario->handleRequest($request);
ERROR:
Entity was not found.
答案 0 :(得分:2)
$equipoActividad = $request->getSession()->get("equipoActividad");
然后
$em->merge($equipoActividad);
需要管理将由学说处理的所有实体。会话对象不再存在。所以你不需要像merge()
那样创建一个全新的实体管理器,实体管理器会照顾你再次管理那个实体,从那时起,你可以像从db中获取一样使用它。 / p>
如果您想了解更多信息,请阅读http://doctrine-orm.readthedocs.org/en/latest/cookbook/entities-in-session.html
这里的错误是由于你的对象状态:实际上你没有在会话存储之前保持它(合并需要实体已经持久化并刷新到db)。您可以在存储会话之前或之后,在使用会话检索工具时保留/刷新它。
如果你不需要,你也不能坚持下去:)