我正在使用Laravel,并且数据库中有一个名为“ course”的表。它具有一些字段,例如“标题”,“内容”等。 我也希望一门课程具有一些先决条件(其他课程)。我该如何实施?我可以通过自参考外键来做到这一点,但是通过这种方式,课程的前提是一个前提。
答案 0 :(得分:1)
因为一门课程可以具有许多先决条件,而一个先决条件属于许多与n:m关系的课程。
使用字段course_prerequisite
,id
,course_id
创建数据透视表prerequisite_id
。
向课程模型添加具有prerequisites()
关系的BelongsToMany
方法,如下所示:
prerequisites() : BelongsToMany
{
return $this->belongsToMany(Course::class, 'course_prerequisite', 'course_id', 'prerequisite_id')
}
如果需要反向关系,请使用courses
添加一个BelongsToMany
方法:
courses() : BelongsToMany
{
return $this->belongsToMany(Course::class, 'course_prerequisite', 'prerequisite_id', 'course_id')
}
答案 1 :(得分:1)
有许多可行的方法可以做到这一点。我提到了两种方法。
方法1:
您可以像这样创建课程表。
Create table courses(
id int(10) not null primary key,
title varchar(25),
content varchar(255)
);
现在创建另一个表用于先决条件映射。
create table prerequisites(
course_id int(10),
prerequisite_id int(10),
foreign key (course_id) references courses(id),
foreign key (prerequisite_id) references courses(id)
)
方法2:
另一种方法是通过在课程表中为前提课程添加新列。尽管您不能以这种方式添加外键约束,但是可以通过编程方式进行管理。
Create table course(
id int(10) not null primary key,
prerequisites varchar(250),
title varchar(25),
content varchar(255)
)