javascript - query - sequelize raw
Donde condiciĆ³n para mesa unida en Sequelize ORM (2)
Quiero obtener una consulta como esta con secuela ORM:
SELECT "A".*,
FROM "A"
LEFT OUTER JOIN "B" ON "A"."bId" = "B"."id"
LEFT OUTER JOIN "C" ON "A"."cId" = "C"."id"
WHERE ("B"."userId" = ''100''
OR "C"."userId" = ''100'')
El problema es que la secuela no me permite hacer referencia a la tabla "B" o "C" en la cláusula where. Código siguiente
A.findAll({
include: [{
model: B,
where: {
userId: 100
},
required: false
}, {
model: C,
where: {
userId: 100
},
required: false
}]
]
me da
SELECT "A".*,
FROM "A"
LEFT OUTER JOIN "B" ON "A"."bId" = "B"."id" AND "B"."userId" = 100
LEFT OUTER JOIN "C" ON "A"."cId" = "C"."id" AND "C"."userId" = 100
que es una consulta completamente diferente, y el resultado de
A.findAll({
where: {
$or: [
{''"B"."userId"'' : 100},
{''"C"."userId"'' : 100}
]
},
include: [{
model: B,
required: false
}, {
model: C,
required: false
}]
]
ni siquiera es una consulta válida:
SELECT "A".*,
FROM "A"
LEFT OUTER JOIN "B" ON "A"."bId" = "B"."id"
LEFT OUTER JOIN "C" ON "A"."cId" = "C"."id"
WHERE ("A"."B.userId" = ''100''
OR "A"."C.userId" = ''100'')
¿La primera consulta es incluso posible con la secuela, o debo limitarme a las consultas en bruto?
Envuelva las columnas que hacen referencia a tablas unidas en $$
A.findAll({
where: {
$or: [
{''$B.userId$'' : 100},
{''$C.userId$'' : 100}
]
},
include: [{
model: B,
required: false
}, {
model: C,
required: false
}]
});
Me estoy topando con un problema similar como xb1tz y lo publiqué aquí. Pero al parecer no es útil. Así que estoy publicando una nueva pregunta: Secuela de nivel superior, donde con modelos cargados con entusiasmo crea una sub consulta