首页 文章

使用Sequelize,如何在不包含连接模型的属性的情况下查询模型?

提问于
浏览
0

模型定义如下:

Team = sequelize.define 'team',
  name: Sequelize.STRING

User = sequelize.define 'user',
  name: Sequelize.STRING
  foo: Sequelize.INTEGER

Team.hasMany User
User.belongsTo Team

如何让所有团队包含 foo 等于 42 的用户,而不包括结果中的用户,并且在结果中没有多次相同的团队,也就是说,如何生成以下查询?

SELECT DISTINCT team.id, team.name
FROM team
INNER JOIN user ON user.team_id = team.id
WHERE user.foo = 42

Edit :查询应为a raw query,即使用 findAll()raw 选项 .

1 回答

  • 0

    要进行内连接,请在 find* 方法的 include 选项中使用required = true . 怎么样DISTINCT - 你可以试试这个黑客:

    Team.findAll({ 
        attributes: ['DISTINCT team.id','team.name'], // hack with distinct
        include: [{ 
            model: User, 
            required: true, // inner join
            attributes: []  // exclude user fields from select
        }] 
    });
    

相关问题