在 Sequelize 中将模型的条件与其关联的条件结合起来
Posted
技术标签:
【中文标题】在 Sequelize 中将模型的条件与其关联的条件结合起来【英文标题】:Combine model's condition with its association's condition in Sequelize 【发布时间】:2017-08-10 09:12:58 【问题描述】:有没有办法通过适用于自己的字段或适用于其关联字段的条件来查找模型?
给定模型Model
和Association
,其中每个Model
都有一个Association
。
const Model = sequelize.define('model',
name: sequelize.STRING,
);
const Association = sequelize.define('association',
name: sequelize.STRING,
);
Association.belongsTo(Model);
Model.hasOne(Association);
我想找到所有Model
s,要么有一个name
等于“文本”,要么有一个Association
和一个name
等于“文本”。
到目前为止,我提出了Sequelize.literal
的解决方案,但看起来不够健壮。
Model.findAll(
attributes: ['id', 'name'],
include: [
model: Association,
attributes: [],
],
where:
$or: [
name: 'test' ,
Sequelize.literal('association.name = \'test\''),
],
,
);
有没有更好的办法?
【问题讨论】:
【参考方案1】:文档中描述了此功能:Top level where with eagerly loaded models。
Model.findAll(
attributes: ['id', 'name'],
include: [
model: Association,
attributes: [],
],
where:
$or: [
name: 'test' ,
'$association.name$': 'test' ,
],
,
);
【讨论】:
以上是关于在 Sequelize 中将模型的条件与其关联的条件结合起来的主要内容,如果未能解决你的问题,请参考以下文章