我正在尝试实现可以动态地将查询字符串或构建器作为参数的联合。请参见下面的代码:
function dynamicUnion(queryString||builder){
baseQuery.union(function () {
//I want to use query string or querybuilder here instead.
this.select('*').from('users').whereNull('first_name');
})
}
在行:this.select('*').from('users').whereNull('first_name')
的地方,我想实现类似:this.raw(queryString||builder)
或任何可行的替代方法,尽管在使用{时没有遇到.raw()
方法该块中的{1}}关键字。
我之所以这样实现,是因为this
中要使用的select
查询会有所不同,并且如果动态传递,效率很高。
答案 0 :(得分:1)
听起来像knex中的错误,this.raw
在这种情况下不起作用。这是将原始查询传递给联合的一种方法:
const Knex = require('knex');
const knex = Knex({
client: 'mysql',
});
knex('foo').union(knex.raw('foo bar')).toSQL();
// outputs "select * from `foo` union foo bar"