first
This commit is contained in:
27
app/Http/Concerns/SortsQuery.php
Normal file
27
app/Http/Concerns/SortsQuery.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Concerns;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
trait SortsQuery
|
||||
{
|
||||
/**
|
||||
* @param array<int, string> $allowed
|
||||
*/
|
||||
protected function sortedQuery(Builder $query, array $allowed, string $default, string $defaultDir = 'asc'): Builder
|
||||
{
|
||||
$sort = request()->input('sort', $default);
|
||||
$dir = request()->input('direction', $defaultDir);
|
||||
|
||||
if (! in_array($sort, $allowed, true)) {
|
||||
$sort = $default;
|
||||
}
|
||||
|
||||
if (! in_array($dir, ['asc', 'desc'], true)) {
|
||||
$dir = $defaultDir;
|
||||
}
|
||||
|
||||
return $query->orderBy($sort, $dir);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user