#postgresql #sequelize.js
Вопрос:
Я использую секвенирование и вложенное включение. Я хочу, чтобы стол ModelC
был соединен со столом ModelB
id
и со ModelA
SomeColumnId
столом . Таблицы ModelC
и ModelA
не имеют связей друг с другом, но у них обоих есть связи ModelB
(hasMany-принадлежит). До сих пор это мой код:
const model = await ModelA.findAll({
include: {
model: ModelB,
include: {
model: ModelC,
where: {
[Op.and]: [
sequelize.literal(
'"ModelB->ModelC"."SomeColumnId" = "ModelA"."SomeColumnId"'
),
],
},
},
},
subQuery: false,
raw: true,
});
Но это дает мне ошибку:
Invalid reference to FROM-clause entry for table "ModelA".
There is an entry for table "ModelA", but it cannot be referenced from this part of the query.
Как я могу решить эту проблему?
Ответ №1:
Мне удалось решить эту проблему.
const model = await ModelA.findAll({
include: {
model: ModelB,
raw: true,
include: {
model: ModelC,
required: false,
where: {
SomeColumnId: [sequelize.literal('"ModelA"."SomeColumnId"')],
},
},
},
});