gpt4 book ai didi

mysql - KnexJS 具有多个表和别名

转载 作者:行者123 更新时间:2023-11-29 16:14:33 35 4
gpt4 key购买 nike

我最近一直在使用 KnexJS,并且从 KnexJS 文档中获得了我需要的大部分内容,但是我有一些更复杂的 MySQL 查询,我无法自己将其“移植”到 Knex。我知道可以选择使用 .raw(),但我想尽可能避免这种情况。

我的工作 MySQL 查询如下所示:

SELECT A.profile_id, C.model_name, D.brand_name, A.car_plate
FROM carsdb.profiles_has_cars A,
carsdb.profiles B,
carsdb.brands_cars C,
carsdb.brands D
WHERE A.profile_id = B.user_id AND
A.car_id = C.id AND
A.brand_id = D.id;

到目前为止我得到的是:

  return new Promise((resolve, reject) => {
db({
A: "profiles_has_cars",
B: "profiles",
C: "brands_cars",
D: "brands"
})
.select("A.profile_id", "C.model_name", "D.brand_name", "A.car_plate")
.where({
"A.profile_id": userId,
"A.car_id": "C.id",
"A.brand_id": "D.id"
})
.then(results => {
if (results > 0) {
resolve(results);
} else {
reject("There is a problem with a query");
}
});
});

我还尝试过在 .where() 中使用对象作为参数,但这也没有任何作用。

有什么帮助或建议吗?

最佳答案

噢,我明白了。 knex 不明白 .where 值实际上是对另一个字段的引用并将它们解释为字符串。

尝试为每个 .whereRaw("A.car_id = C.id") 替换一个。 (仅供引用,不代表实际值)。

关于mysql - KnexJS 具有多个表和别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54945692/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com