同一模式中的不同继承类型

gre*_*ire 26 inheritance doctrine symfony1 concrete-inheritance column-aggregation

我在symfony项目上使用Doctrine 1.2,我正在考虑在我的模式中混合具体和列聚合继承类型:列聚合让我在父表中查询并获取父记录和子记录,而具体的继承让我得到更清洁的架构.此外,混合将在同一个继承链中.我该如何编写模式文件?喜欢以下?

A:

B:
  inheritance:
    extends: A
    type: concrete

C:
  inheritance:
    extends: B
    type: column_aggregation
    keyField:         type
    keyValue:         1
Run Code Online (Sandbox Code Playgroud)

或者这样或许:

A:

B:
  inheritance:
    extends: A
    type: concrete

C:
  inheritance:
    extends: B
    type: concrete
D:
  inheritance:
    extends: C
    type: column_aggregation
    keyField:         type
    keyValue:         1


E:
  inheritance:
    extends: C
    type: column_aggregation
    keyField:         type
    keyValue:         2
Run Code Online (Sandbox Code Playgroud)

有危险/警告吗?

foo*_*oty 1

只要您避免循环继承或菱形继承,您就可以使用它

循环继承显然如下所示

A 类扩展 B 类 B 扩展 A

或者

A 类延伸 C 类

B 类扩展 A

C 类扩展了 A

钻石继承有点圆润。当发生以下类型的情况时,就会发生这种情况

A级

B 类扩展 A

C 类扩展了 A

D 类扩展 B、C