gpt4 book ai didi

jquery - Sequelize - 如何对连接表使用 where 子句

转载 作者:行者123 更新时间:2023-12-03 22:34:36 25 4
gpt4 key购买 nike

我试图在具有多个连接表级别的查询中包含一个带有函数的 where 子句,如下所示:

    return Database.Sequelize.where(
Database.Sequelize.fn('lower', Database.Sequelize.fn('unaccent', Database.Sequelize.col(attribute))),
'LIKE',
Database.Sequelize.fn('lower', `%${accentsHandler(param.toLowerCase())}%`))
}

A.findAll({
where:[Op.or]:[whereByParamUnnaccented('a', '$B.C.field$'),
whereByParamUnnaccented('a', '$B.field$')]
include:[{
model: B,
include:[{
model:C
}]
}]
})
但相反,我收到此错误:

Error retrieving missing FROM-clause entry for table "$B->C" SequelizeDatabaseError: missing FROM-clause entry for table "$B->C".


更新 1
我并没有真正复制我正在尝试做的事情,而是更新了查询。但是,基本上,我希望能够使用来自不同表的字段来创建或条件。

最佳答案

您可以将子句放在 include 中。
具有关联关系的示例:

Post : id, title, description
Tag: id, name
PostTag : id, fk_post_id, fk_tag_id
楷模 :
Post.associate = (models) => {
models.Post.belongsToMany(models.Tag, {
as: "Tag",
through: "PostTag",
foreignKey: "fk_post_id",
otherKey: "fk_tag_id",
})
}

Tag.associate = (models) => {
models.Tag.belongsToMany(models.Post, {
as: "Post",
through: "PostTag",
foreignKey: "fk_tag_id",
otherKey: "fk_post_id",
})
}
条款包括:
db.Post.findOne({
where: {
id: 1, // where on Post
},
include: [
{
model: db.Tag,
as: "Tag",
where: {
name: "Tag1", // where on Tag
},
},
],
})

关于jquery - Sequelize - 如何对连接表使用 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62595609/

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