我将使用CakePHP手册中的CourseMembership
示例来说明我的问题。所以有以下表格:
CREATE TABLE course (
id INT NOT NULL PRIMARY KEY,
course_name VARCHAR(255)
);
CREATE TABLE student (
id INT NOT NULL PRIMARY KEY,
student_name VARCHAR(255)
);
CREATE TABLE course_membership (
course_id INT NOT NULL REFERENCES(course.id),
student_id INT NOT NULL REFERENCES(student.id),
attended_lectures TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY (course_id, student_id)
);
我的模特看起来像这样:
class Course extends AppModel {
public $hasMany = array('CourseMembership');
}
class Student extends AppModel {
public $hasMany = array('CourseMembership');
}
class CourseMembership extends AppModel {
public $belongsTo = array('Course', 'Student');
}
在此设置中添加CourseMembershipProperty
模型/表的最佳方法是什么?我对模型类中的模式和关系配置很好奇。
关系应该是:
CourseMembershipProperty
belongsTo CourseMembership
CourseMembership
hasMany CourseMembershipProperty
。为简单起见,CourseMembershipProperty
模型表可以包含两个VARCHAR
字段,name
和value
。
答案 0 :(得分:0)
有一些问题:
您的表名应该是多元的:
course
应为courses
student
应为students
course_membership
应为course_memberships
请注意CakePHP食谱中的这一部分:
“CakePHP不支持复合主键。”
course_memberships
表的主键id
应自动递增,并且应删除course_id和student_id的复合主键,并将其用作外键。如果不首先纠正这个问题,CourseMembership模型就会行为不端。
之后,CourseMembershipProperty
模型应使用CourseMembership
的外键链接到course_membership_id
模型。这应该只是在您的示例中定义模型,因为我们此时将遵循CakePHP命名约定。