我正在编写一个应用程序,用Symfony3和Doctrine创建调查。我想了解哪种方法可以模拟调查,项目和答案之间的关系。调查由具有特殊答案类型的多个项目组成。例如,我可以有以下类型:
使用Doctrine建模此场景的最佳方法是哪种?
我认为有两种可能的解决方案:
我创建一个Answer对象,包括答案的每个可能的功能。 Item对象应与此对象具有一对一的关系。
我在预定义的类属性中创建一个包含特定Answer对象(AnswerChoice,AnswerText ...)的通用Item对象。 Survey对象应与Item具有一对多的关系,而Item又与特定的Answer对象具有一对一的关系;
您能帮我选择最佳解决方案吗?我觉得我没有面对这个问题。感谢
答案 0 :(得分:1)
这是继承。实际上Doctrine handles inheritance非常好。
在Doctrine中有几种实现继承的方法,但我认为,在你的情况下Single Table Inheritance就是你正在寻找的。
通过这种方式,您将能够获得父(抽象)答案的存储库,但您将获得实际子类型的实例作为回报。