Files
prn2026/app/Http/Concerns/SortsQuery.php
2026-06-03 08:51:22 +08:00

28 lines
638 B
PHP

<?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);
}
}