使用Doctrine2存储动态字段

时间:2012-05-04 15:02:55

标签: orm doctrine-orm

在我们的应用程序中,我们希望使用doctrine2,但是,我们想要提供一个功能,但我对它如何工作完全感到困惑。

我们希望客户能够为我们的标准对象定义自定义字段。因此,这些字段将在运行中生成,而不是由学说知道和映射的对象定义的一部分。

我们的第一个想法是使用nosql(mongodb或amazon dynamodb)存储一些这样的数据,但由于我们想要使用doctrine来处理我们的核心对象,我们希望保持在学说范围内以实现这一目标必须超出它来存储这些数据。

我想到的一件事是使用doctrine的序列化/反序列化复杂对象的能力,只需要将自定义字段名称的哈希值及其值作为对象中的额外属性,但是,这不允许我们有一个功能如果我们想要允许的话,那会搜索这些字段...

有人试图用doctrine2或任何orm变体来做这件事吗?

1 个答案:

答案 0 :(得分:2)

您可以考虑使用Doctrine ODM,它是Doctrine 2但是NoSQL - 我相信它们至少支持MongoDB。

另一种方法是按照你的说法使用序列化。您可能不应该过多担心搜索 - 我建议使用单独的全文搜索引擎(Solr,ElasticSearch或其他),因为它们为搜索与SQL全文搜索提供了更多的多功能性和性能。

第三,你可以将Doctrine与NoSQL一起使用。在这种情况下,您可能应该将查询抽象为服务类等,以便您可以使用Doctrine查询SQL数据库中的数据,以及其他一些查询剩余数据的数据。

最后,您可以考虑使用键值表。一列代表键,另一列代表值。