对对象使用PHP会话
我可以选择在我的web项目上创建新合同 创建新合同由以下文件组成(注意法语):对对象使用PHP会话,php,codeigniter,session,logic,Php,Codeigniter,Session,Logic,我可以选择在我的web项目上创建新合同 创建新合同由以下文件组成(注意法语): 合作客户 费希德库维特酒店 合同 分类客户机 瑞士菲希酒店 米塞广场平面图 CCI 金融危机 保存按钮 因此,我有一个主创建页面,用户可以单击其中一个文档,填写所有字段并返回到该屏幕。我目前的解决方案是在PHP会话上存储一个大对象(存储所有文档数据),并将用户所做的每一次修改附加到该对象上 例如,如果用户转到第一个文档,写入一些内容,然后返回到主面板,则数据将保存在会话中。当他单击保存按钮时会话中的所有内容都存储
- 合作客户
- 费希德库维特酒店
- 合同
- 分类客户机
- 瑞士菲希酒店
- 米塞广场平面图
- CCI
- 金融危机 保存按钮
保存按钮时
会话中的所有内容都存储在一个复杂的数据库模式中
如果在合同不完整时单击“保存”(它至少缺少一个文档),则大对象将存储在MongoDB中,并在以后恢复
还请注意,自定义对象是在会话中保存和恢复的,无需强制转换。至于mongo,我必须强制转换每个组件。在我看来,我几乎不擅长使用非关系数据库。我找到的解决方案非常简单: 我序列化了对象,而不是像下面那样插入MongoDB,然后在从数据库中选择时使用复杂的强制转换 之前:
//convert big object to array to store in MongoDB
$this->mongo_db->insert('contrats', (array)$contrat);
之后:
$data=Array();
$data['identifier']='123' //set an id so I can query by
$data['contract']=serialize($contract);
$this->mongo_db->insert('contrats',$data);
数据恢复非常简单-unserialize($row->contract)
返回我需要的对象
这种在Mongo中存储临时数据的方法变得很简单,我只需要设置一个标识符来查找契约并序列化大对象