Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何创建一个“属于”一个“有多个通过”连接模型的模型?_Php_Cakephp_Relationship_Cakephp 2.4 - Fatal编程技术网

Php 我如何创建一个“属于”一个“有多个通过”连接模型的模型?

Php 我如何创建一个“属于”一个“有多个通过”连接模型的模型?,php,cakephp,relationship,cakephp-2.4,Php,Cakephp,Relationship,Cakephp 2.4,我将使用CakePHP手册中的CourseMembership示例来说明我的问题。因此,有以下表格: 创建表格课程 id INT非空主键, 课程名称VARCHAR255 ; 创建表学生 id INT非空主键, 学生姓名VARCHAR255 ; 创建表格课程\ U成员资格 课程id INT不为NULL REFERENCEScourse.id, 学生id INT不为NULL referencestudent.id, 出席讲座TINYINT不为空默认值0, 主键课程号,学生号 ; 我的模型是这样的

我将使用CakePHP手册中的CourseMembership示例来说明我的问题。因此,有以下表格:

创建表格课程 id INT非空主键, 课程名称VARCHAR255 ; 创建表学生 id INT非空主键, 学生姓名VARCHAR255 ; 创建表格课程\ U成员资格 课程id INT不为NULL REFERENCEScourse.id, 学生id INT不为NULL referencestudent.id, 出席讲座TINYINT不为空默认值0, 主键课程号,学生号 ;

我的模型是这样的:

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模型/表添加到此设置的最佳方法是什么?我对模型类中的模式和关系配置都很好奇

这些关系应该是:

CourseMembership属性属于CourseMbership CourseMembership具有许多CourseMbership属性。
为简单起见,CourseMembershipProperty模型的表可以有两个VARCHAR字段,即name和value。

有几个问题:

您的表名应为复数:

课程应该是课程

学生应该是学生

课程(u)会籍应为课程(u)会籍

请注意CakePHP食谱中的这一部分:

CakePHP不支持复合主键

course_memberships表应具有自动递增的id主键,并且course_id和student_id的复合主键应被删除并用作外键。如果不首先纠正这个问题,CourseMembership模型将出现错误

在这之后,CourseMembershipProperty模型应该通过使用一个外键course_membership_id链接到CourseMbership模型。这应该通过简单地定义您在示例中所拥有的模型来实现,因为此时我们将遵循CakePHP命名约定