複数のorderBy()カラムを使用することはできますか?Knex.js複数のorderBy()カラム
knex
.select()
.table('products')
.orderBy('id', 'asc')
orderBy()連鎖可能なのは、単一の列キーとソート値だけですが、複数の列でどのように注文できますか?
複数のorderBy()カラムを使用することはできますか?Knex.js複数のorderBy()カラム
knex
.select()
.table('products')
.orderBy('id', 'asc')
orderBy()連鎖可能なのは、単一の列キーとソート値だけですが、複数の列でどのように注文できますか?
あなたはcall .orderBy
multiple timesは、複数の列で注文することができます。
knex
.select()
.table('products')
.orderBy('name', 'desc')
.orderBy('id', 'asc')
ありがとうございますが、それをプログラム的に適用する方法はありますか? orderByフィールドの未知数については? –
列のリストを繰り返し、それぞれに対して 'orderBy'を呼び出します。私はあなたのための練習として基本的なJSを保存します:) – Kevin
オリジナルの答えは技術的に正しい、と便利ですが、私の意図は、プログラムで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()
を複数回呼び出します。
私は元の答えがあなたも意図したように働いていたと思います。たとえば: let query = knex .select() .table( 'products'); _each(sortArray、function(sort){ query.orderBy(sort.field、sort.direction); }); – nembleton
私はそこに特別な機能があるとは思っていませんが、あなたは 'orderByRaw'を実行して必要なものを書くことができます –
@VsevolodGoloviznin私はそれをする必要はないと思っていました。 –