From 97855f4bf446732a86979128b4213e51af93c04c Mon Sep 17 00:00:00 2001 From: debuggerx01 Date: Tue, 11 Jan 2022 17:46:56 +0800 Subject: [PATCH] fix_multi_order_by --- packages/orm/angel_orm/lib/src/query.dart | 5 +++-- packages/orm/angel_orm_test/lib/src/join_test.dart | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/orm/angel_orm/lib/src/query.dart b/packages/orm/angel_orm/lib/src/query.dart index 91f6980f..9e4d72fa 100644 --- a/packages/orm/angel_orm/lib/src/query.dart +++ b/packages/orm/angel_orm/lib/src/query.dart @@ -331,8 +331,9 @@ abstract class Query extends QueryBase { b.write(' WHERE $whereClause'); } if (_groupBy != null) b.write(' GROUP BY $_groupBy'); - for (var item in _orderBy) { - b.write(' ORDER BY ${item.compile()}'); + var orderByClause = _orderBy.map(item.compile()).join(', '); + if (orderByClause?.isNotEmpty == true) { + b.write(' ORDER BY $orderByClause'); } if (_limit != null) b.write(' LIMIT $_limit'); if (_offset != null) b.write(' OFFSET $_offset'); diff --git a/packages/orm/angel_orm_test/lib/src/join_test.dart b/packages/orm/angel_orm_test/lib/src/join_test.dart index b380de64..630bf156 100644 --- a/packages/orm/angel_orm_test/lib/src/join_test.dart +++ b/packages/orm/angel_orm_test/lib/src/join_test.dart @@ -80,4 +80,12 @@ void joinTests(FutureOr Function() createExecutor, element.personAge == originalPerson?.age), true); }); + + test('select orders with multi order by fields', () async { + var query = PersonOrderQuery(); + query.orderBy(PersonOrderFields.personId, descending: true); + query.orderBy(PersonOrderFields.id, descending: true); + var orders = await query.get(executor); + expect(orders.first.personId > orders.last.personId, true); + }); }