Vis*_*mar 6

答案在于关系名称本身.我将使用文档中提供的示例.

HasManyThrough:

  • 医生已通过预约许多患者
  • 病人有很多医生通过预约

    在这里,医生和患者通过约会彼此相关但不直接相关.预约模型有助于建立一种关系,因为它属于医生和患者.由于预约,患者可以预约任意数量的医生.并且医生可以看到许多预定他/她的患者.

HasAndBelongsToMany:

  • 学生有很多课程,属于很多班级.
  • 班级有很多学生,属于很多学生.

    在这里,学生和班级直接相互关联.学生们通常会参加许多课程,如物理,化学等 - 所以他们有很多课程.由于每节课都参加,因此学生属于许多班级.同样,许多学生都会上课 - 所以上课有很多学生.并且由于每个学生都保持出勤率,因此班级属于许多学生.

注意:

  1. 如果两个类通过像约会这样的干预模型与多对多关系相关,那么使用hasManyThrough.
  2. 如果两个类与多对多关系直接相关,请使用hasAndBelongsToMany

  • 两个关系都需要连接表,对吧?有哪些实施差异? (5认同)