【问题标题】:How to pass an entity stored in session to new entity如何将存储在会话中的实体传递给新实体
【发布时间】:2015-09-03 08:59:06
【问题描述】:

我在会话中存储一个实体:

$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);

错误:

Entity was not found. 

【问题讨论】:

    标签: php symfony doctrine entity


    【解决方案1】:
    $equipoActividad = $request->getSession()->get("equipoActividad");
    

    然后

    $em->merge($equipoActividad);
    

    需要管理将由学说处理的所有实体。会话对象不再存在。因此,您无需像 merge() 那样创建一个全新的实体,实体管理器会照顾您再次管理该实体,从那时起,您可以像从 db 中获取一样使用它。

    如果您想了解更多信息,请阅读http://doctrine-orm.readthedocs.org/en/latest/cookbook/entities-in-session.html


    编辑

    这里的错误是由于您的对象状态:实际上您没有在会话存储之前将其持久化(合并需要实体已经持久化并刷新到数据库)。当您使用会话检索工具时,您可以在存储到会话之前或之后持久化/刷新它。

    顺便说一句,如果你不需要,你也可以不坚持它:)

    【讨论】:

    • @IvanJavierBarrancoGavilan:如果您想提供更多详细信息,请更新您的问题,不要把它们放在这里
    • 问题是必须坚持填写第二个表格是我给你看的,如果用户取消助手不保存更改。
    • 不能复制对象再复制?
    • @IvanJavierBarrancoGavilan:为什么需要复制对象?只需加载您需要的所有字段,将对象放入会话,制作您的控件并保留您需要的所有内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多