2

我可以选择在我的 Web 项目上创建新合同。

创建新合同由以下文件组成(注意法语):

  • Coordonnees 客户
  • Fiche Découverte
  • 合同
  • 分类客户端
  • 捕食者
  • 就地计划
  • CCI
  • Enquête financière

    保存按钮

所以我有一个主创建页面,用户可以在其中单击这些文档之一,填写所有字段并返回此屏幕。我目前的解决方案是在 PHP 会话中存储一个大对象(存储所有文档数据),并将用户所做的每次修改附加到它上面。

例如,如果用户转到第一个文档,写一些东西然后返回到主面板,则数据将保存在会话中。当他单击时SAVE BUTTON,会话中的所有内容都存储在一个复杂的数据库模式中。

如果在合约不完整时点击保存(它至少缺少一个文档,大对象存储在 MongoDB 中,稍后恢复。

  1. 我所做的一切都被认为是好的做法吗?
  2. 我不应该在 SESSION 上休息吗?(目前我没有任何问题。对象大小约为 5kb)
  3. 我还应该使用 Mongo 来存储中间数据吗?

Ps:这是一个内部项目,所以安全永远不会成为问题。问题将是数据的一致性和质量。

另请注意,自定义对象无需强制转换即可从会话中保存和恢复。至于 mongo,我必须转换每个组件。

4

1 回答 1

1

在我看来,我在使用非关系数据库方面几乎是个菜鸟。我找到的解决方案很简单:

我没有像下面那样插入 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 中存储临时数据变得很容易,我只需要设置一个标识符来查找合约并序列化大对象。

于 2012-08-24T07:53:47.710 回答