mysql - 不能按字段从包含过滤
问题描述
我在尝试在 sequelize 中执行 findAll 方法并使用“include”选项进行一些内部连接并过滤我包含的表的字段时遇到了一些问题。
我试图在包含的对象中添加一个 where 选项,认为它会像普通的 where 子句一样工作,但是它将子句添加到内部连接
这是模拟我的表格的代码
CREATE TABLE IF NOT EXISTS TABLE_B(
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE IF NOT EXISTS TABLE_A(
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
bId INTEGER NOT NULL,
FOREIGN KEY (bId) REFERENCES TABLE_B (id)
);
这是 sequelize 方法及其执行的基本查询的示例
import Sequelize from 'sequelize';
const Op = Sequelize.Op;
function randomMethod(keyWord) {
return table_a.findAll({
where: {
name: {
[Op.or]: [{ [Op.like]: '%' + keyWord + '%' }, null],
}
},
include: [{
model: table_b,
required: true,
as: "table_b",
}]
})
}
它基本上执行这样的查询:
SELECT
*
FROM table_a
INNER JOIN table_b
ON table_a.bId = table_b.id
WHERE
table_a.name like '%'|| KeyWord ||'%' OR table_a = NULL;
这是我在 sequelize 上尝试执行的查询示例
SELECT
*
FROM table_a
INNER JOIN table_b
ON table_a.bId = table_b.id
WHERE
(table_a.name like '%'|| KeyWord ||'%' OR table_a = NULL)
OR
table_b.name like '%'|| KeyWord ||'%';
但我似乎找不到用 sequelize 来做这件事的方法,而且我没有找到任何有类似问题的人。有谁能够帮我?
解决方案
推荐阅读
- excel - 使用求和积函数 Excel 逐行递增一列
- sql - 使用 SQL 检查 CosmosDB JSON 中是否存在字段 - nodeJS
- unicode - 为什么 Unicode 被限制为 0x10FFFF?
- java - @JsonValue 和 @ApiModelProperty 冲突
- jquery - Jquery 自动完成组合框 - 如何从数据库加载数据?
- angular - Implementing 2 components and using both one inside another just like angular-material does with its component
- reactjs - 更新 JSON 状态对象问题
- angular - 接口属性中的 Angular 6 描述
- angular - Ionic 3/4,错误类型错误:_co.toBoarding 不是函数
- docker - docker images 按名称和通配符过滤