Вам нужно пройти весь путь от cities
до houses
. И для этого вам действительно нужно создать ассоциацию сверху вниз, прямо сейчас у вас есть обратная связь. Позвольте мне объяснить.
С вашими фактическими ассоциациями ваши модели называют друг друга следующим образом:
houses -> streets -> districts -> cities
Потому что houses
зависит от streets
и так далее. Все, что нам нужно, - это перейти к другому.
cities -> districts -> streets -> houses
Model1: cities
this.hasMany(models.districts, {as: "districts", foreignKey: 'city_id'});
И сделать то же самое для districts
и streets
.
Теперь для того, что вы хотите, мы можем выполнить следующий запрос.
cities.findAll({
include: [{
model: model.districts,
as: 'districts',
include: [{
model: model.streets,
as: 'streets',
include: [{
model: model.houses,
as: 'houses',
where: {} //your condition here
}]
}]
}]
});
Теперь, как вы упомянули, другой способ - создать ассоциацию напрямую из городов в дома, но это действительно зависит от вашей схемы и бизнес-модели.