From f11b361ad37e8fe6d5277979a42117e405df60b9 Mon Sep 17 00:00:00 2001 From: Andrey Kozlov Date: Thu, 23 Feb 2023 09:53:53 +0400 Subject: [PATCH] Force qualified columns in sorts and filters --- src/Services/QueryBuilder/Filters/RhsColonSyntax.php | 4 +++- src/Services/QueryBuilder/QueryBuilder.php | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Services/QueryBuilder/Filters/RhsColonSyntax.php b/src/Services/QueryBuilder/Filters/RhsColonSyntax.php index 9538e54..2ca7a5b 100644 --- a/src/Services/QueryBuilder/Filters/RhsColonSyntax.php +++ b/src/Services/QueryBuilder/Filters/RhsColonSyntax.php @@ -110,6 +110,8 @@ protected function isOperatorAllowed(string $operator, array $allowedOperators, */ protected function applyFilter(Builder $query, string $column, string $operator, string $value) { + $column = $query->getModel()->qualifyColumn($column); + // Do some final preparations of the value if(in_array($operator, ['in', 'nin'])) { $value = explode(',', $value); @@ -137,4 +139,4 @@ protected function applyFilter(Builder $query, string $column, string $operator, $query->where($column, $this->operatorsMap[$operator], $value); } } -} \ No newline at end of file +} diff --git a/src/Services/QueryBuilder/QueryBuilder.php b/src/Services/QueryBuilder/QueryBuilder.php index a54fc07..5e65aea 100644 --- a/src/Services/QueryBuilder/QueryBuilder.php +++ b/src/Services/QueryBuilder/QueryBuilder.php @@ -14,7 +14,8 @@ public function allowedSorts($sorts) : BaseQueryBuilder if($sort instanceof AllowedSort) { return $sort; } - return AllowedSort::field(ltrim($sort, '-')); + $name = ltrim($sort, '-'); + return AllowedSort::field($name, $this->getModel()->qualifyColumn($name)); }); $this->ensureAllSortsExist(); $this->addRequestedSortsToQuery();