gpt4 book ai didi

mysql - Sequelize - 通过多个连接表的 Where 子句

转载 作者:可可西里 更新时间:2023-11-01 09:03:38 26 4
gpt4 key购买 nike

我在 Node 中使用 sequelize orm 将对象映射到 mysql 数据库。基本上我有两个表productcategory。一个产品属于一个类别,但一个类别可以有多个产品。在类别表中,我有一列“parent_id”,它引用了它自己的 id。最多可以有三级层次结构。

主要目标是找到属于父类别**某物的任何类别的产品,例如 26。我可以像下面这样在 sql 中推断查询。

select * from product as p join category as c on p.category_id = c.id join  
category as c1 on c1.id = c.parent_id join category as c2
on c2.id = c1.parent_id where c.id = 26 or c1.id = 26 or c2.id = 26

在 sequelize 中,我尝试通过包含如下引用来进行预加载

{
// upto three levels of category
model : category,
as : 'c',
attributes : [ 'id' ],
include : {
model : category,
as : 'c1',
attributes : [ 'id' ],
include : [ {
model : category,
as : 'c2',
attributes : [ 'id' ]
} ]
}
}

该连接非常有效,但如何适合 where 子句

c.id = 26 或 c1.id = 26 或 c2.id = 26

提前致谢。非常感谢任何帮助。

最佳答案

尝试在查询的每个级别添加“where objects”。第一个 where 对象适用于表 c。第二个 where 对象,嵌套在 include 对象中,适用于表 c1,依此类推。

{
// upto three levels of category
model : category,
as : 'c',
attributes : [ 'id' ],
where { id : 26 },
include : {
model : category,
as : 'c1',
attributes : [ 'id' ],
where { id : 26 },
include : [ {
model : category,
as : 'c2',
attributes : [ 'id' ],
where { id : 26 }
} ]
}
}

关于mysql - Sequelize - 通过多个连接表的 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35644185/

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