Skip to content

Commit

Permalink
Adding orderByDesc function to Builder (#893)
Browse files Browse the repository at this point in the history
* Adding orderByDesc function to Builder

* Removing 'direction' parameter in orderByDesc docblock

* Update Builder.php

---------

Co-authored-by: Taylor Otwell <[email protected]>
  • Loading branch information
jdavidbakr and taylorotwell authored Dec 6, 2024
1 parent dabe61f commit b000080
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/Builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,17 @@ public function orderBy($column, $direction = 'asc')
return $this;
}

/**
* Add a descending "order by" clause to the search query.
*
* @param string $column
* @return $this
*/
public function orderByDesc($column)
{
return $this->orderBy($column, 'desc');
}

/**
* Add an "order by" clause for a timestamp to the query.
*
Expand Down
12 changes: 12 additions & 0 deletions tests/Feature/CollectionEngineTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,14 @@ public function test_it_can_paginate_results()
$models = SearchableUser::search('laravel')->query($dummyQuery)->orderBy('name')->paginate(1, 'page', 2);
$this->assertCount(1, $models);
$this->assertEquals('Taylor Otwell', $models[0]->name);

$models = SearchableUser::search('laravel')->query($dummyQuery)->orderByDesc('name')->paginate(1, 'page', 1);
$this->assertCount(1, $models);
$this->assertEquals('Taylor Otwell', $models[0]->name);

$models = SearchableUser::search('laravel')->query($dummyQuery)->orderByDesc('name')->paginate(1, 'page', 2);
$this->assertCount(1, $models);
$this->assertEquals('Abigail Otwell', $models[0]->name);
}

public function test_limit_is_applied()
Expand All @@ -127,6 +135,10 @@ public function test_it_can_order_results()
$models = SearchableUser::search('laravel')->orderBy('name', 'desc')->paginate(1, 'page', 1);
$this->assertCount(1, $models);
$this->assertEquals('Taylor Otwell', $models[0]->name);

$models = SearchableUser::search('laravel')->orderByDesc('name')->paginate(1, 'page', 1);
$this->assertCount(1, $models);
$this->assertEquals('Taylor Otwell', $models[0]->name);
}

public function test_it_can_order_by_latest_and_oldest()
Expand Down
12 changes: 12 additions & 0 deletions tests/Feature/DatabaseEngineTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -166,12 +166,24 @@ public function test_it_can_order_results()
$this->assertCount(1, $models);
$this->assertEquals('Taylor Otwell', $models[0]->name);

$models = SearchableUser::search('laravel')->orderByDesc('name')->take(1)->get();
$this->assertCount(1, $models);
$this->assertEquals('Taylor Otwell', $models[0]->name);

$modelsPaginate = SearchableUser::search('laravel')->orderBy('name', 'desc')->paginate(1, 'page', 1);
$this->assertCount(1, $modelsPaginate);
$this->assertEquals('Taylor Otwell', $modelsPaginate[0]->name);

$modelsPaginate = SearchableUser::search('laravel')->orderByDesc('name')->paginate(1, 'page', 1);
$this->assertCount(1, $modelsPaginate);
$this->assertEquals('Taylor Otwell', $modelsPaginate[0]->name);

$modelsSimplePaginate = SearchableUser::search('laravel')->orderBy('name', 'desc')->simplePaginate(1, 'page', 1);
$this->assertCount(1, $modelsSimplePaginate);
$this->assertEquals('Taylor Otwell', $modelsSimplePaginate[0]->name);

$modelsSimplePaginate = SearchableUser::search('laravel')->orderByDesc('name')->simplePaginate(1, 'page', 1);
$this->assertCount(1, $modelsSimplePaginate);
$this->assertEquals('Taylor Otwell', $modelsSimplePaginate[0]->name);
}
}

0 comments on commit b000080

Please sign in to comment.