mirror of
https://gitee.com/ctexthuang/hyperf-micro-svc.git
synced 2026-02-08 10:20:16 +08:00
38 lines
962 B
PHP
38 lines
962 B
PHP
<?php
|
|
|
|
namespace App\Common\Repository\Traits;
|
|
|
|
use Hyperf\Database\Model\Builder;
|
|
|
|
trait RepositoryOrderByTrait
|
|
{
|
|
public function handleOrderBy(Builder $query, $params): Builder
|
|
{
|
|
if ($this->enablePageOrderBy()) {
|
|
$orderByField = $params[$this->getOrderByParamName()] ?? $query->getModel()->getKeyName();
|
|
$orderByDirection = $params[$this->getOrderByDirectionParamName()] ?? 'desc';
|
|
$query->orderBy($orderByField, $orderByDirection);
|
|
}
|
|
return $query;
|
|
}
|
|
|
|
protected function bootRepositoryOrderByTrait(Builder $query, array $params): void
|
|
{
|
|
$this->handleOrderBy($query, $params);
|
|
}
|
|
|
|
protected function getOrderByParamName(): string
|
|
{
|
|
return 'order_by';
|
|
}
|
|
|
|
protected function getOrderByDirectionParamName(): string
|
|
{
|
|
return 'order_by_direction';
|
|
}
|
|
|
|
protected function enablePageOrderBy(): bool
|
|
{
|
|
return true;
|
|
}
|
|
} |