可以做多个orderBy()列吗?
knex
.select()
.table('products')
.orderBy('id', 'asc')orderBy() chainable只接受一个列键和一个排序值,但是我如何按多列排序呢?
发布于 2016-04-03 19:34:08
您可以通过 multiple times按多列进行排序:
knex
.select()
.table('products')
.orderBy('name', 'desc')
.orderBy('id', 'asc')发布于 2016-04-04 13:21:00
最初的答案在技术上是正确的,也是有用的,但我的意图是找到一种多次编程应用orderBy()函数的方法,下面是我参考的实际解决方案:
var sortArray = [
{'field': 'title', 'direction': 'asc'},
{'field': 'id', 'direction': 'desc'}
];
knex
.select()
.table('products')
.modify(function(queryBuilder) {
_.each(sortArray, function(sort) {
queryBuilder.orderBy(sort.field, sort.direction);
});
})Knex提供了一个修改功能,允许直接对queryBuilder进行操作。然后数组迭代器多次调用orderBy()。
发布于 2020-06-30 12:50:33
Knex orderBy函数还接收一个数组:
knex('users').orderBy(['email', 'age', 'name'])或
knex('users').orderBy(['email', { column: 'age', order: 'desc' }])或
knex('users').orderBy([{ column: 'email' }, { column: 'age', order: 'desc' }])https://stackoverflow.com/questions/36353837
复制相似问题