我正在使用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
但这创造了一个问题,导演我为歌手,摄影师,女演员等创建了另一个表,那么如何才能有一个表格,我可以存储所有信息并规范化数据?
感谢您的帮助
答案 0 :(得分:1)
使用可以使用此映射:
电影:
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