Получать значения из связанной таблицы с Sequelize.Яш
team table match table
=========== ================================
tid= name mid= date =home_team=away_team
============= ================================
01 = denver 01 =10.11.13 = 01 = 04
02 = minesota 02 =11.11.13 = 02 = 03
03 = orlando 03 =11.11.13 = 04 = 02
04 = portland 04 =12.11.13 = 03 = 01
у меня есть классическая проблема SQL JOIN-заполненные данные матча и не могут получить имена домашних и выездных команд, которые расположены в другой таблице.
var Team = sequelize.define('Team', { ... });
var Match = sequelize.define('Match',{ .. });
Team.hasOne(Match, {foreignKey: 'home_team', as: 'Home'})
Team.hasOne(Match, {foreignKey: 'away_team', as: 'Away'});
как я понял из документов после создания as: 'Home
и as: 'Away
Я получаю некоторые
геттеры и сеттеры как Match.getHome
но я запуталась. как я могу использовать это
Match.find({where: {id: 1}}).success(function(match) {
console.log(match);
});
1 ответов
проблема заключается в вашей ассоциации. Вы только определили ассоциацию от команды к матчу, но теперь вы хотите пойти другим путем, от матча к команде. Это означает, что вы должны сделать:
Match.belongsTo(Team, {foreignKey: 'home_team', as: 'Home'});
Match.belongsTo(Team, {foreignKey: 'away_team', as: 'Away'});
после этого вы можете сделать
Match.find({where: {mid: 1}}).success(function(match) {
match.getHome().success(function(home_team) {
});
});
или вы можете использовать жадную загрузку:
Match.find({
where: { mid: 1 },
include: [
{ model: Team, as: 'Home'}
]
}).success(function(match) {
// Here you can access the home team data in match.home
});
если вы хотите, чтобы как дома, так и на выезде команды сразу:
Match.find({
where: { mid: 1 },
include: [
{ model: Team, as: 'Home'}
{ model: Team, as: 'Away'}
]
}).success(function(match) {
// Here you can access the home team data in match.home and away team in match.away
});