在我的应用程序中,我有2个表有多对多的关系。让我们说这些是表学生和表课程。每门课程可以有很多学生,每个学生也可以参加许多课程。
现在我想创建一个关联表,根据cakephp应该命名为courses_students。
但是出于各种原因,我希望将新表命名为注册表。我会在很多地方使用这个表的主键,而宁愿使用enrollment_id而不是courses_student_id作为外键。
如果我这样做,我必须做很多手动编码,还是仍然可以使用cakephp的自动化?有关此问题的最佳做法/指南的任何指示?
由于
答案 0 :(得分:4)
简短的回答是肯定的。如果连接表在2个外键旁边有自己的ID,那么Cake仍然可以使用hasAndBelongsToMany
魔法。
我会做的,可能冒YAGNI的风险,放弃hasAndBelongsToMany
关联支持两个hasMany
关系。由于您计划通过自己的ID访问每个注册,我预计在某些时候,它可能具有自己的属性(例如enrollment_date
,course_evaluation
等)并且可能需要获取作为一个单独的模型一起对待。当然,Enrollment
模型会belongsTo
Student
和Course
模型。
显然,“我会做什么”的场景是未经请求的,但我认为我会提供一个略微不同的方向,仍然允许一个健康的蛋糕魔法剂量以及可能发挥作用的一点延伸性基于你已经在做的事情。
答案 1 :(得分:0)
之前我从未想过这个,但也许您可以将主键命名为enrollment_id并保留名为courses_students的表并烘焙它。我认为您可以像这样设置模型的主键和ID:
var $id = 'enrollment_id';
var $primaryKey = 'enrollment_id'
希望有所帮助。