在给出ID之前从实体管理器检索

时间:2011-09-20 08:28:37

标签: php symfony persist entitymanager

情况如下 -

我需要在页面之间保留一个对象。在第一页上,我创建了对象,并为其创建了一个表单。在第二页,我坚持对象。然后,用户可以选择返回并编辑他们的选择,或者完成和发布。

在用户完成对象编辑之前,我不希望将更改刷新到数据库。问题是在将对象刷新到数据库之前,该对象不会获得唯一的ID。

有谁知道如何检索持久但未刷新的对象?这甚至可能吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

序列化对象,直到完成所有属性。您可以在会话中保存序列化对象以在页面之间保留。当您准备更新或插入时,只需将其反序列化并将其放入数据库。

编辑:示例

// page 1
$object->setProperty($value);
$_SESSION['object'] = serialize($object);

// page 2
$object = unserialize($_SESSION['object']);
// use $object

$_SESSION['object'] = serialize($object);


// page N
$object = unserialize($_SESSION['object']);
$object->insertIntoDB();

编辑2 - 不要忘记在反序列化对象的所有页面中包含类定义,否则它将无效。