如何在.inner Join() 中使用变量?
How to use variables in .innerJoin()?
我有的是像下面这样的代码
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)
它给了我
routine: "errorMissingColumn"
我试过给表别名,但还是一样的错误。
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)
如果它对你来说效果更好,你可以像这样逐渐建立它。显然,可以包装上述帮助器以使参数更灵活。
我有的是像下面这样的代码
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)
它给了我
routine: "errorMissingColumn"
我试过给表别名,但还是一样的错误。
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)
如果它对你来说效果更好,你可以像这样逐渐建立它。显然,可以包装上述帮助器以使参数更灵活。