我在数据库中有以下表:Users: id|name|age
Hobbies: id|user_id|hobby
在 Sequelize 中,我有以下关联:Users.hasMany(Hobbies)
Hobbies.belongTo(Users)
要检索用户及其爱好的列表,查询如下:Users.findAll(include: [{model: Hobbies}])
我将查询结果映射到域对象。
查询结果如下所示:[{id: 1, name: 'John', age: 20, hobbies: ['fishing', 'running']}]
我试图返回一个有钓鱼爱好的用户列表。
据我了解,我可以像这样对关联本身应用 where 查询:Users.findAll(include: [{model: Hobbies, where: {hobby: 'fishing'}}])
但这仍然会返回所有用户,并且只会返回每个钓鱼用户的爱好。
有没有办法根据用户的爱好在用户级别应用 where 查询?
最佳答案
我认为您需要更改连接类型。 Sequelize 在连接两个模型时默认使用左外连接,但如果您通过将 required
设置为 true
将其更改为内连接,您将获得预期的结果 -
Users.findAll(include: [{model: Hobbies, where: {hobby: 'fishing'}, required : true}])
我希望它有帮助!
关于mysql - Sequelize where 查询一对多关联属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60609581/