2016-11-26 4 views
0

У меня есть 4 модели. Factory, Car, Driver и Config.Подключение других моделей

Factory s есть Car s. A Config принадлежит как Factory, так и Car. A Driver принадлежит только Car, но из-за этой связи я хочу, чтобы они также принадлежали Factory.

По сути, мне нужен запрос, чтобы найти все Config s для конкретного водителя. То есть Config s относится ко всем Car s, которые относятся к дискам Driver, и все Factory s, с которыми связан Driver через Car.

Вот как отношения устанавливаются:

Factory.hasMany(Config); 
Factory.hasMany(Car); 

Car.belongsToMany(Driver, { through: 'CarDrivers' }); 
Car.hasMany(Config); 
Car.belongsTo(Factory); 

Driver.belongsToMany(Car, { through: 'CarDrivers' }); 

Config.belongsTo(Car); 
Config.belongsTo(Factory); 

Я хочу, чтобы запрос таким образом, чтобы:

const configs = await Config.findAll({ 
    where: { relatedUserId: ?? }, 
}); 

ответ

0

Вы должны включить модели, в которой вы хотите «Поиск».
Так что в вашем случае что-то вроде:

const configs = await Config.findAll({ 
    where: { relatedUserId: 1 }, //searches in Config 
    include: [{ 
    model : Driver, 
    where : { someId: 1}//searches in Driver 
}, 
{ 
include: Driver, 
through:{ 
where: { CarId: 1} // searches "through" n:m Table 
} 
}, 
include:[ 
all : true // includes ALL models which are Associated to Config 
] 
] 
}); 

это некоторые случаи, чтобы включать соответствующие модели и искать в них где.
Возможно, вам придется сменить его на работу для своих моделей, потому что я сейчас не платил. Внимание, как вы связали свои модели.
Ознакомиться больше информации о своих товарах:
http://sequelize.readthedocs.io/en/latest/docs/querying/#relations-associations

Смежные вопросы