我下面是这样的代码
var innerQuery = knex('foo_table').select('bar_column')
var joinTable = knex('some_table').select('bar_column')
knex(innerQuery).innerJoin(joinTable,joinTable.bar_column,innerQuery.bar_column)
它给了我
例程:“ errorMissingColumn”
我曾经尝试过给桌子提供Allias,但这是同样的错误。
答案 0 :(得分:1)
Knex确实允许使用.innerJoin
中的变量,但是变量必须是一个函数。它被传递给查询构建器对象(或者,对于非箭头函数,可以使用this.
作为查询构建器)。因此,您可以执行以下操作:
const innerQuery = knex('foo_table').select('bar_column')
const onBarColumn = qb => qb.on('foo_table.bar_column', '=', 'some_table.bar_column')
const joinTable = qb => qb('some_table').innerJoin('foo_table', onBarColumn)
innerQuery.innerJoin(joinTable)
如果它对您更好,则可以逐步构建它。显然,可以将上述帮助器包装起来以使参数更灵活。