我有三个表承包商,项目和连接表这两个是projects_contractors我创建了模型并写了如下的关系,
Contractor.hasMany(Project, {joinTableName: 'projects_contractors'})
Project.hasMany(Contractor, {joinTableName: 'projects_contractors'})
我想访问这个基于承包商的项目意味着内部加入。
核心查询: 选择c.id,c.name,p.id,p.name来自承包商c内联接projects_contractors pc on c.id = pc.contractor_id内联接项目p on p.id = pc.project_id
我在实现以下代码时失败了。 “required”是一个用于内部JOIN的关键字,但如果我们保留则不起作用。
Contractor.findAll({ include: [Project, {required: false}]}).success(function(list){
console.log("hi")
res.send(204)
})
如果不需要,它将在项目和承包商上创建一个左外部JOIN。建议我上面的senario示例。
答案 0 :(得分:22)
正确的语法是:
Contractor.findAll({ include: [{model: Project, required: true}]})
通常,include params既可以是模型,也可以是带有模型参数的对象,可选择为/ required / include / where params。