假设我有3张桌子。
Students
表包含所有学生(所有大学生)数据。 College
表包含所有大学数据。 CollegeStudents
表包含学生和学院的映射。我没有使用软删除。当我删除大学时,我可以使用关系轻松删除CollegeStudents
数据,因为CollegeStudents
是College
的孩子。(onDelete(' cascade'))。但我的问题是,我想在删除学院行时删除Students
表中的学生。怎么可能呢。在 mysql 中有什么方法可以管理这种标准吗?我使用 Laravel 雄辩。
感谢您的帮助。
答案 0 :(得分:2)
将学生表中的大学ID用作外键。
答案 1 :(得分:1)
添加@V-Wanderer的答案,您可以在迁移中指定如何处理外键关系。
示例
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
将按预期删除关系
reference_option: 限制| CASCADE | SET NULL |没有动作| SET DEFAULT
答案 2 :(得分:0)
如果您不想添加外键,可以在College模型中添加方法:
protected static function boot(){
parent::boot();
static::deleted(function($college)
{
foreach($college->students as $student) {
$student->delete();
}
});
}
当然,您还需要在同一模型中定义students
方法(如下图所示)。
public function students()
{
return $this->hasMany('App\Student');
}
方法students
取决于您如何定位与大学有关系的学生......
来源:LINK