relation) ->append('_') ->append($this->field->getName()) ->snake() ->upper(); return (string) match ($this->direction) { SortDirection::ASC => $name, SortDirection::DESC => $name->append('_DESC'), }; } /** * Apply the ordering to the current Eloquent builder. */ public function sort(Builder $builder): Builder { $column = $this->field->getColumn(); $builder->withAggregate([ "{$this->relation} as {$this->relation}_$column" => function ($query) use ($column): void { $query->orderBy($column, $this->direction->value); }, ], $column); return $builder->orderBy("{$this->relation}_$column", $this->direction->value); } }