Symfony2多对多关系数据库结构



我正在使用Symfony2构建一个用于管理电影数据库的应用程序。我有电影表和艺术家表。

现在在电影中可能有很多艺术家扮演不同的角色,我的问题开始了,因为我不太擅长关系映射,所以我面临着问题。

对于电影X,艺术家A是演员,对于电影Y,艺术家B是演员和导演。

现在我的问题是,我如何构建加入表,以便保存和检索艺术家相关的作品,如:电影名称,角色(可以是一部电影的多个角色)

到目前为止,我的ORM是:电影

table: content
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
title:
type: string
length: 120
unique: true
manyToMany:
actor:
targetEntity: Artist
joinTable:
name: content_actor
joinColumns:
content_id:
referencedColumnName: id
inverseJoinColumns:
artist_id:
referencedColumnName: id

艺术家ORM:

id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 255
unique: true

但这造成了一个问题,对于导演来说,我已经为歌手、摄像师、女演员等创建了另一个连接表,那么怎么能只有一个表来存储所有信息并规范数据呢?

感谢的帮助

好吧,我用另一种方式写:

使用可以使用这个映射:

电影:

Movie:
type: entity
table: movie
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
title: ~
createdAt:
type: datetime
oneToMany:
roles:
targetEntity: Role
mappedBy: movie

艺术家:

Artist:
type: entity
table: artist
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
fname: ~
lname: ~
birthDate:
type: datetime
#other fields for this entity

角色:

Role:
type: entity
table: role
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name: ~
manyToMany:
artist:
targetEntity: Artist
manyToOne:
movie:
targetEntity: Movie
inversedBy: roles

相关内容

  • 没有找到相关文章

最新更新