【发布时间】:2014-01-29 13:26:47
【问题描述】:
当用户在编辑操作中单击“预览”时,我有实体“页面”并将其置于会话中。在预览视图中,用户可以返回编辑,但是当我从会话中获取实体并将其合并(必须管理实体以放入表单)时,关系实体只有 ID。我想从会话中完整加载实体。
if ($preview == 1) {
if ($request->isMethod('POST')) {
$em->detach($page);
$request->getSession()->set('page', $page);
} else {
$page = $request->getSession()->get('page');
echo '<pre>';
var_dump($page);
\Doctrine\Common\Util\Debug::dump($page, 4);
//$page = $em->merge($page);
//
}
}
这个测试显示 var_dump 打印实体中的所有字段,但 Doctrine 转储(或合并然后 var_dump)只有 ID。为什么?
【问题讨论】:
-
看来您必须先序列化一个对象才能将其放入会话中:stackoverflow.com/questions/9384836/…
-
这个问题虽然一旦被反序列化,它们就会与实体管理器分离。
-
@n.1 为什么要序列化?从会话加载的实体具有所有属性,但在合并后 \Doctrine\Common\Util\Debug::dump($page, 4);我丢失了除 ID 以外的所有数据
-
@Flosculus 你是什么意思?实体在从会话加载后分离,但我尝试合并它然后放入 from - 结果相同,除了 ID 之外没有任何属性
-
@psalkowski: 我为什么要序列化? 我已经看到一个对象必须可序列化才能传递给会话,但我从未测试过,我分享了链接以防万一它对您有所帮助。我不知道很抱歉。
标签: php session symfony doctrine-orm