我正在使用Symfony2构建一个用于管理电影数据库的应用程序。
我有电影表和艺术家表。
现在在电影中,可能会有许多扮演不同角色的艺术家,而我的问题开始了,因为我不太擅长关系映射,所以我面临问题。
对于电影X,艺术家A是演员,对于电影Y,艺术家B是演员和导演。
现在我的问题是如何建立Joining表,以便保存检索到的艺术家相关作品,例如:电影名称,角色(一部电影可能是多个角色)
到目前为止,我的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
关于mysql - Symfony2多对多关系数据库结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29692163/