0

这是我的 Schema.yml 的正确语法吗?

  user_type_1 :
    inheritance:
    type:             concrete
    extends:          sfGuardUser
 columns:
   name: { type: string(255) }

  user_type_2 :
    inheritance:
    type:             concrete
    extends:          sfGuardUser
 columns:
   name: { type: string(255) }

我的项目由两种类型的用户user_type_1user_type_2组成,我希望它们都从 sfGuardUser 继承,我应该使用继承类型具体column_aggregation

谢谢

4

1 回答 1

0

你可以使用任何一种,这取决于你想要什么。从文档

具体
的具体继承为子类创建单独的表。然而,在具体继承中,每个类都会生成一个包含所有列(包括继承列)的表。为了使用具体继承,您需要向子类添加显式 parent::setTableDefinition() 调用,如下所示。

列聚合
在下面的示例中,我们有一个名为实体的数据库表。用户和组都是实体,它们共享同一个数据库表。实体表有一个名为 type 的列,它告诉实体是组还是用户。然后我们确定用户是类型 1 和组类型 2。我们唯一要做的就是创建 3 条记录(与之前相同)并从父类添加对 Doctrine_Table::setSubclasses() 方法的调用。

使用具体继承将创建 2 个表(user_type_1 和 user_type_2),而 column_aggregation 只会创建 1 个具有“类型”列的表。

于 2012-04-26T14:01:15.687 回答