From d15e1e163afeddf7d715a96258c0691c59a15c46 Mon Sep 17 00:00:00 2001 From: khamkham Date: Tue, 4 Mar 2014 23:45:55 +0100 Subject: [PATCH 1/2] Add natural reverse (descending) sort option --- src/Jenssegers/Mongodb/Query/Builder.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Jenssegers/Mongodb/Query/Builder.php b/src/Jenssegers/Mongodb/Query/Builder.php index 8c685de0e..55fb2d4af 100644 --- a/src/Jenssegers/Mongodb/Query/Builder.php +++ b/src/Jenssegers/Mongodb/Query/Builder.php @@ -281,17 +281,17 @@ public function distinct($column = false) * @param string $direction * @return Builder */ - public function orderBy($column, $direction = null) + public function orderBy($column, $direction = 'asc') { - if (is_null($direction) && $column == 'natural') + $direction = (strtolower($direction) == 'asc' ? 1 : -1); + + if ($column == 'natural') { - $this->orders['$natural'] = 1; + $this->orders['$natural'] = $direction; } else { - $direction = $direction ?: 'asc'; - - $this->orders[$column] = (strtolower($direction) == 'asc' ? 1 : -1); + $this->orders[$column] = $direction; } return $this; From 9a5b24f12d9cef67c71cb2e1f4293198dee548fa Mon Sep 17 00:00:00 2001 From: khamkham Date: Tue, 4 Mar 2014 23:57:20 +0100 Subject: [PATCH 2/2] Update QueryTest.php natural sort --- tests/QueryTest.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/QueryTest.php b/tests/QueryTest.php index 5975e3c4c..0746dee1f 100644 --- a/tests/QueryTest.php +++ b/tests/QueryTest.php @@ -148,8 +148,14 @@ public function testOrder() $user = User::whereNotNull('age')->orderBy('age', 'desc')->first(); $this->assertEquals(37, $user->age); - $user = User::whereNotNull('age')->orderBy('natural')->first(); + $user = User::whereNotNull('age')->orderBy('natural', 'asc')->first(); $this->assertEquals(35, $user->age); + + $user = User::whereNotNull('age')->orderBy('natural', 'ASC')->first(); + $this->assertEquals(35, $user->age); + + $user = User::whereNotNull('age')->orderBy('natural', 'desc')->first(); + $this->assertEquals(35, $user->age); } public function testGroupBy()