2010-01-06 76 views
0

所以我是symfony的新手,并试图在几个表之间建立一个is-a关系。我有一个媒体表,它有一个id字段,它是主键。然后,我除了有2个或更多额外的表是这个表的“子类”,如文章或事件表。这些是媒体表的子类,我在这些表中放置了media_id字段,这些字段对媒体表具有FK约束,并且是特定表的主键。但是,当我根据此模型构建模块时,此关系不成立。Symfony是一个数据库模式

例如,当我尝试添加一篇文章时,我必须先添加一个媒体项目,但在创建文章窗体中,无法向其添加媒体ID。

任何想法?

谢谢!而不是关系

回答

1

使用inheritance

detect_relations: true 
Media: 
    columns: 
    #columns for all sub classes 

Event: 
columns: 
# other columns for Event Subclass 
inheritance: 
    extends: Media 
    type: column_aggregation 
    key_field: type 
    key_value: 1 

Other: 
columns: 
# other columns for Other Subclass 
inheritance: 
    extends: Media 
    type: column_aggregation 
    key_field: type 
    key_value: 2 
+0

有趣。但是会创建一个包含所有列的大表。如果我想在未来添加更多的子类表,这听起来不是一个好主意。 – Danny 2010-01-06 03:47:59

+0

具体继承(与列聚合相对)将把它们放在单独的表中。虽然使用迁移将允许您在以后添加列。 – prodigitalson 2010-01-06 03:53:36

+1

再次感谢您的帮助。所以我尝试了具体的,但它似乎实际上添加任何行到媒体表中。我为什么要这么做的关键在于让所有媒体类型之间的ID保持同步,以便我可以将注释和标签附加到所有媒体类型中。 任何想法? 谢谢! – Danny 2010-01-06 04:56:32