Skip to content

Commit e876e26

Browse files
committed
query filter withour array key avoid collision
1 parent c0aa6bc commit e876e26

File tree

2 files changed

+45
-8
lines changed

2 files changed

+45
-8
lines changed

src/Traits/QueryFilter.php

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,26 +132,49 @@ private function filterRelationModel(): void
132132
*/
133133
private function defaultFilterableColumn(): self
134134
{
135-
$this->builder->when(!empty(request()?->query("created_at")[0]), function (Builder $query) {
135+
if ($filterKey = config('queryextend.filter_query_param_root')) {
136+
$requestCreatedStartFilter = empty(request()->query()[$filterKey]["created_at"][0]);
137+
$requestCreatedEndFilter = empty(request()->query()[$filterKey]["created_at"][1]);
138+
} else {
139+
$requestCreatedStartFilter = empty(request()->query("filter_created_at")[0]);
140+
$requestCreatedEndFilter = empty(request()->query("filter_created_at")[1]);
141+
}
142+
143+
$this->builder->when(!$requestCreatedStartFilter, function (Builder $query) use ($filterKey) {
136144
try {
137-
$date = Carbon::createFromFormat('Y-m-d', request()?->query("created_at")[0]);
145+
$date = Carbon::createFromFormat('Y-m-d', $filterKey ?
146+
request()->query()[$filterKey]["created_at"][0] :
147+
request()->query("filter_created_at")[0]
148+
);
138149
} catch (\Exception $e) {
139-
throw ValidationException::withMessages(['created_at.0' => 'Date format should be yyyy-mm-dd']);
150+
if ($filterKey) {
151+
throw ValidationException::withMessages(["$filterKey.created_at.0" => 'Date format should be yyyy-mm-dd']);
152+
} else {
153+
throw ValidationException::withMessages(["filter_created_at.0" => 'Date format should be yyyy-mm-dd']);
154+
}
140155
}
141156

142157
$query->where("created_at", ">=", $date->startOfDay());
143158
});
144159

145-
$this->builder->when(!empty(request()?->query("created_at")[1]), function (Builder $query) {
160+
$this->builder->when(!$requestCreatedEndFilter, function (Builder $query) use ($filterKey) {
146161
try {
147-
$date = Carbon::createFromFormat('Y-m-d', request()?->query("created_at")[1]);
162+
$date = Carbon::createFromFormat('Y-m-d', $filterKey ?
163+
request()->query()[$filterKey]["created_at"][1] :
164+
request()->query("filter_created_at")[1]
165+
);
148166
} catch (\Exception $e) {
149-
throw ValidationException::withMessages(['created_at.1' => 'Date format should be yyyy-mm-dd']);
167+
if ($filterKey) {
168+
throw ValidationException::withMessages(["$filterKey.created_at.1" => 'Date format should be yyyy-mm-dd']);
169+
} else {
170+
throw ValidationException::withMessages(["filter_created_at.1" => 'Date format should be yyyy-mm-dd']);
171+
}
150172
}
151173

152174
$query->where("created_at", "<=", $date->endOfDay());
153175
});
154176

177+
155178
return $this;
156179
}
157180

src/Traits/QueryOrder.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,22 @@ public function _orderColumn(array|string|null $orderableColumns = null, string
4545
*/
4646
private function defaultOrderColumn(): void
4747
{
48-
$this->builder->when(!empty(request()->query("order_created_at")), function (Builder $query) {
49-
$query->orderBy("created_at", request()->query("order_created_at"));
48+
if ($orderKey = config('queryextend.order_query_param_root')) {
49+
$requestCreatedOrder = empty(request()->query()[$orderKey]["created_at"]);
50+
} else {
51+
$requestCreatedOrder = empty(request()->query("order_created_at"));
52+
}
53+
54+
$this->builder->when(!$requestCreatedOrder, function (Builder $query) use ($orderKey) {
55+
$direction = $orderKey ?
56+
request()->query()[$orderKey]["created_at"] :
57+
request()->query("order_created_at");
58+
59+
$direction = strtolower($direction);
60+
61+
if ($direction === "asc" || $direction === "desc") {
62+
$query->orderBy("created_at", $direction);
63+
}
5064
});
5165
}
5266

0 commit comments

Comments
 (0)