diff --git a/app/Repositories/ContractInterface.php b/app/Repositories/ContractInterface.php index fd290f2..73f6b8c 100644 --- a/app/Repositories/ContractInterface.php +++ b/app/Repositories/ContractInterface.php @@ -10,5 +10,5 @@ interface ContractInterface public function update(array $params, $id); public function destroy($id); public function withRelationsByAll($relations); - public function search($params, $distinct = false); + public function search($param); } diff --git a/app/Repositories/MethodsTrait.php b/app/Repositories/MethodsTrait.php index 2f2abb9..744ffd5 100644 --- a/app/Repositories/MethodsTrait.php +++ b/app/Repositories/MethodsTrait.php @@ -38,7 +38,7 @@ trait MethodsTrait return $this->model->with($relations)->get(); } - public function search($params, $distinct = false) + public function search($params) { $filter = static::getFilterBuilder($params); @@ -48,7 +48,7 @@ trait MethodsTrait $response = $filter->applyFilter($query); - if (isset($distinct)){ + if ($filter->isDistinct()){ $response = $response->distinct(); } diff --git a/app/Support/FilterBuilder/FilterQueryBuilder.php b/app/Support/FilterBuilder/FilterQueryBuilder.php index 8349b5d..73af9df 100644 --- a/app/Support/FilterBuilder/FilterQueryBuilder.php +++ b/app/Support/FilterBuilder/FilterQueryBuilder.php @@ -20,6 +20,8 @@ class FilterQueryBuilder extends EntityJson implements IFilterBuilder protected array $fields = []; + protected bool $distinct = false; + public function applyFilter(Builder $builder): Builder { @@ -123,4 +125,24 @@ class FilterQueryBuilder extends EntityJson implements IFilterBuilder $this->offset = $offset; } + /** + * @return bool + */ + public function isDistinct(): bool + { + return $this->distinct; + } + + /** + * @param bool $distinct + */ + public function setDistinct(bool $distinct): void + { + $this->distinct = $distinct; + } + + + + + } \ No newline at end of file