情况如下——
我需要在页面之间保留一个对象。在第一页上,我创建了对象,并为它创建了一个表单。在第二页上,我坚持这个对象。然后,用户可以选择返回并编辑他们的选择,或者完成并发布。
在用户完成对对象的编辑之前,我不希望将我的更改刷新到数据库中。问题是对象在刷新到数据库之前不会获得唯一的 ID。
有谁知道我如何检索持久但未刷新的对象?这甚至可能吗?有一个更好的方法吗?
情况如下——
我需要在页面之间保留一个对象。在第一页上,我创建了对象,并为它创建了一个表单。在第二页上,我坚持这个对象。然后,用户可以选择返回并编辑他们的选择,或者完成并发布。
在用户完成对对象的编辑之前,我不希望将我的更改刷新到数据库中。问题是对象在刷新到数据库之前不会获得唯一的 ID。
有谁知道我如何检索持久但未刷新的对象?这甚至可能吗?有一个更好的方法吗?
您序列化对象,直到完成它的所有属性。您可以将序列化对象保存在会话中以在页面之间保持不变。当您准备好更新或插入时,只需将其反序列化并将其放入数据库中。
编辑:示例
// 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 - 不要忘记在反序列化对象的所有页面中包含类定义,否则它将不起作用。