fou*_*shw 26 javascript sql postgresql orm sequelize.js
我希望通过sequelize 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')
Run Code Online (Sandbox Code Playgroud)
问题是sequelise不让我在where子句中引用"B"或"C"表.以下代码
A.findAll({
include: [{
model: B,
where: {
userId: 100
},
required: false
}, {
model: C,
where: {
userId: 100
},
required: false
}]
]
Run Code Online (Sandbox Code Playgroud)
给我
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
Run Code Online (Sandbox Code Playgroud)
这是完全不同的查询和结果
A.findAll({
where: {
$or: [
{'"B"."userId"' : 100},
{'"C"."userId"' : 100}
]
},
include: [{
model: B,
required: false
}, {
model: C,
required: false
}]
]
Run Code Online (Sandbox Code Playgroud)
甚至没有有效的查询:
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')
Run Code Online (Sandbox Code Playgroud)
是第一次查询甚至可能与sequelize,或者我应该坚持原始查询?
Jan*_*ier 45
包含引用连接表的列 $$
A.findAll({
where: {
$or: [
{'$B.userId$' : 100},
{'$C.userId$' : 100}
]
},
include: [{
model: B,
required: false
}, {
model: C,
required: false
}]
});
Run Code Online (Sandbox Code Playgroud)
Jas*_*ngh 12
在 include 中添加 where 条件以及 join。
{
model: C,
where: {
id: 1
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11708 次 |
最近记录: |