如何解决分隔两个表之间的多个关联
我正在创建体育网站,但无法设置团队与游戏之间的链接。每个游戏都有一个与我的团队表关联的homeTeamId和awayTeamId。
团队模型协会:
teams.hasMany(models.games,{
as: 'homeTeam',foreignKey: {
allowNull: false,name: 'homeTeamId'
},onDelete: 'CASCADE',});
teams.hasMany(models.games,{
as: 'awayTeam',name: 'awayTeamId'
},});
游戏模型协会:
games.belongsTo(models.teams,name: 'homeTeamId',},});
games.belongsTo(models.teams,name: 'awayTeamId',});
尽管这行得通,但实际上没有任何意义,我觉得我必须做错了什么。每当我想查找与团队相关的比赛时,都必须执行以下可怕的查询:
Teams.findAll({
attributes: ['name'],include: [
{
model: models.games,as: 'homeTeam',required: true,attributes: [],on: {
'$teams.id$': {
[Op.in]: [
models.sequelize.col('homeTeam.homeTeamId'),models.sequelize.col('homeTeam.awayTeamId')
]
}
},where: {
week: query.week
}
},],})
理想情况下,查询应该是这样:
SELECT teams.id,teams.name
FROM teams
INNER JOIN games
ON teams.id IN (games.homeTeamId,games.awayTeamId)
WHERE games.week = 1
任何人都可以提供有关如何正确建立这些关联的一些指导吗?也许有更好的方法编写该查询?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。