我有两个需要一对一关联的模型:Coach和Team。一支球队只有一名教练,而一支教练只有一支球队。
我需要能够从两个方面包括:有时我查询教练并包括团队,有时我查询团队并包括教练。
现在我不确定:是否需要在每个表上创建引用列(表“ Teams”中的CoachId和表“ Coachs”中的TeamId)?
我尝试创建这两列并按如下方式建立关联:
module.exports = models => {
models.Coach.hasOne(models.Team)
models.Team.belongsTo(models.Coach)
}
但是由于某些原因,当我创建教练并设置现有的TeamId时,TeamId列保持为空。另外,即使已经填充,也必须使用正确的TeamId更新Coach行,这感觉很奇怪。
是否可以一次写入就可以全部完成,然后如上所述从双方进行查询?甚至在使用Sequelize一段时间之后,像我一样的感觉仍然不了解Sequelize的一些基本知识。
谢谢!
答案 0 :(得分:1)
要从双方进行查询,您都需要使用一个贯穿表
module.exports = models => {
models.Coach.hasOne(models.Team)
models.Team.belongsTo(models.Coach, {through: 'TeamCoach'})
}
TeamCoach将链接两个表中的主键,以便可以进行双向查询。