学说 - 关系与对象收集保存

时间:2013-09-17 08:58:11

标签: php symfony doctrine-orm entity-relationship

我使用symfony2&学说;

我有2个实体:QuestionAnswer。从逻辑上讲,我会建立一个1:*关系来链接它们。

但由于Answer个对象与其他任何东西无关,因此永远不会在Question之外编入索引(或访问)。所以我使用$ answers属性Question持久化,其中包含Answer个对象的数组。

直到现在一切正常。我想利用Sonata Admin Forms,但它只适用于持久层(ORM或ODM)。

所以我的问题将是:

  1. 在持久对象属性中保存对象集合是“不好的做法”吗?
  2. 如果我改变了我的选择(make Answer Persistent),它会影响我的申请吗?

1 个答案:

答案 0 :(得分:1)

是的, 是一种不好的做法。还有一个非常糟糕的。

我目前正在重构一个继承的应用程序,它有很多序列化对象和存储在列中的数组,我想扼杀这些混蛋 - 我的意思是最初的开发人员。

这样做会产生很多问题。例如,您不能使用其他语言的同一数据库。或者您甚至无法移动或重命名用于序列化的类,因为反序列化将不再起作用。它还使应用程序和数据库难以掌握和维护。

作为一般规则,请保持数据库应用程序的独立性。也就是说,永远不要假设将使用数据库的特定语言或框架。始终设计数据库,以便可以使用不同语言编写的应用程序访问它,甚至可以直接从执行纯SQL查询的命令行访问。

如果没有别的东西让你信服,请记住,一个不稳定的人可能最终会继承你的代码。我们都听过人们上任和拍摄同事的故事;)