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; 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()