CakePHP中电影,演员,导演等之间的模型关联

问题描述

|| 我正在尝试找出设置表/模型关联的最佳方法我有一张桌子
movies
。每部电影可以有零个或多个演员,导演,发行人,作家等。 如果我为每种类型的人使用不同的表/模型,我可以将其设置得很好……但这似乎很不干净。 我的想法是使用
People
模型/表,将HABTM转换为
PeopleType
,将HABTM转换为
Movie
。 将特定的人与电影联系起来就可以了,但是……像克林特·伊斯特伍德这样的人呢?他将是一部电影的导演,另一部电影的演员,甚至两部电影都可以。电影如何知道它指的是哪种类型? 只是无法将最好的方法缠住我的头。     

解决方法

        您可以执行的另一种方法:
people_types (id,name)
people_details (id,first_name,last_name,....)
people (id,person_details_id,person_type_id)
movies_people(id,person_id,movie_id) 
movies (id,title,...)
    ,        由于一个人可以在一部电影中担任导演,而在另一部电影中担任演员,因此您使用“人物类型”的方法似乎并不好,因为您的“ 5”表格会包含每个属于多种类型的人的重复信息。我将创建表
people_details
并为每种类型
directors
actors
publishers
等创建特定表,并带有指向
people_details
表的外键。 “ 7”,“ 8”,“ 9”表还将包含仅特定于相应类型的人员的任何列。 综上所述,
Actor
属于To15ѭ,
Director
属于To15ѭ,
Actor
HABTM
Movie
Director
HABTM
Movie
。     ,        在您的联接表中: 电影人 您可以为\“ role \”之类的内容添加一个额外的字段。您要在那部电影中指定人物功能的位置。然后,您可以将Client Eastwood两次添加到联接表中,一次是针对他在该电影制作中扮演的每个角色。