From 372d99627575eda79081a7eca241bebff602e853 Mon Sep 17 00:00:00 2001 From: wesley Date: Tue, 2 Jan 2024 19:23:08 +0800 Subject: [PATCH 1/3] prevent query error on scoped entity when filter=W10= --- src/Pachyderm/Orm/Model.php | 6 ++++-- src/Pachyderm/Orm/Paginator.php | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Pachyderm/Orm/Model.php b/src/Pachyderm/Orm/Model.php index 575f751..0f7b89c 100755 --- a/src/Pachyderm/Orm/Model.php +++ b/src/Pachyderm/Orm/Model.php @@ -348,8 +348,10 @@ public static function pagination(array $params): SQLBuilder unset($params['order']); if (!empty($params['filter'])) { - $query = new QueryBuilder($params['filter']); - $builder->where($query); + if ($params['filter'] != 'W10=') { + $query = new QueryBuilder($params['filter']); + $builder->where($query); + } unset($params['filter']); } diff --git a/src/Pachyderm/Orm/Paginator.php b/src/Pachyderm/Orm/Paginator.php index cf80bc4..9a6c087 100644 --- a/src/Pachyderm/Orm/Paginator.php +++ b/src/Pachyderm/Orm/Paginator.php @@ -55,8 +55,10 @@ public function parse($params) unset($params['order']); if (!empty($params['filter'])) { - $query = new QueryBuilder($params['filter']); - $this->filters->where($query); + if ($params['filter'] != 'W10=') { + $query = new QueryBuilder($params['filter']); + $this->filters->where($query); + } unset($params['filter']); } From 6c05e13ca124f595016ec6923bd59e710733e2cb Mon Sep 17 00:00:00 2001 From: wesley Date: Wed, 10 Jan 2024 18:09:22 +0800 Subject: [PATCH 2/3] reject non-valid filter in query builder instead of avoid such query --- src/Pachyderm/Orm/Model.php | 6 ++---- src/Pachyderm/Orm/Paginator.php | 6 ++---- src/Pachyderm/Orm/QueryBuilder.php | 1 + 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Pachyderm/Orm/Model.php b/src/Pachyderm/Orm/Model.php index 0f7b89c..575f751 100755 --- a/src/Pachyderm/Orm/Model.php +++ b/src/Pachyderm/Orm/Model.php @@ -348,10 +348,8 @@ public static function pagination(array $params): SQLBuilder unset($params['order']); if (!empty($params['filter'])) { - if ($params['filter'] != 'W10=') { - $query = new QueryBuilder($params['filter']); - $builder->where($query); - } + $query = new QueryBuilder($params['filter']); + $builder->where($query); unset($params['filter']); } diff --git a/src/Pachyderm/Orm/Paginator.php b/src/Pachyderm/Orm/Paginator.php index 9a6c087..cf80bc4 100644 --- a/src/Pachyderm/Orm/Paginator.php +++ b/src/Pachyderm/Orm/Paginator.php @@ -55,10 +55,8 @@ public function parse($params) unset($params['order']); if (!empty($params['filter'])) { - if ($params['filter'] != 'W10=') { - $query = new QueryBuilder($params['filter']); - $this->filters->where($query); - } + $query = new QueryBuilder($params['filter']); + $this->filters->where($query); unset($params['filter']); } diff --git a/src/Pachyderm/Orm/QueryBuilder.php b/src/Pachyderm/Orm/QueryBuilder.php index 9afb0b4..5813135 100644 --- a/src/Pachyderm/Orm/QueryBuilder.php +++ b/src/Pachyderm/Orm/QueryBuilder.php @@ -43,6 +43,7 @@ private function addWhere($globalOperator, $field, $operator, $value) } if ($field instanceof QueryBuilder) { + if (empty($field->build())) return $this; $this->append($globalOperator, $field->build()); return $this; } From 39ac12bd2009e28cf97c3ceeff97f4ca2593df77 Mon Sep 17 00:00:00 2001 From: wesley Date: Tue, 16 Jan 2024 11:52:21 +0800 Subject: [PATCH 3/3] use variable to avoid repetition --- src/Pachyderm/Orm/QueryBuilder.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Pachyderm/Orm/QueryBuilder.php b/src/Pachyderm/Orm/QueryBuilder.php index 5813135..9b1d06c 100644 --- a/src/Pachyderm/Orm/QueryBuilder.php +++ b/src/Pachyderm/Orm/QueryBuilder.php @@ -43,8 +43,9 @@ private function addWhere($globalOperator, $field, $operator, $value) } if ($field instanceof QueryBuilder) { - if (empty($field->build())) return $this; - $this->append($globalOperator, $field->build()); + $filters = $field->build(); + if (empty($filters)) return $this; + $this->append($globalOperator, $filters); return $this; }