我正在使用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