是否可以执行多个orderBy()列?
knex
.select()
.table('products')
.orderBy('id', 'asc')
Run Code Online (Sandbox Code Playgroud)
orderBy()可链接只需要一个列键和一个排序值,但我如何按多列排序?
Kev*_*vin 27
您可以多次调用.orderBy多个列进行排序:
knex
.select()
.table('products')
.orderBy('name', 'desc')
.orderBy('id', 'asc')
Run Code Online (Sandbox Code Playgroud)
Ian*_*nes 16
原始答案在技术上是正确的,也是有用的,但我的目的是找到一种以编程方式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);
});
})
Run Code Online (Sandbox Code Playgroud)
Knex提供了一个修改功能,允许queryBuilder直接操作.然后,数组迭代器会orderBy()多次调用.
Knex orderBy 函数还接收一个数组:
knex('users').orderBy(['email', 'age', 'name'])
Run Code Online (Sandbox Code Playgroud)
或者
knex('users').orderBy(['email', { column: 'age', order: 'desc' }])
Run Code Online (Sandbox Code Playgroud)
或者
knex('users').orderBy([{ column: 'email' }, { column: 'age', order: 'desc' }])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11798 次 |
| 最近记录: |