From f0c2a66cb7533392de365f491090ef87be2f7ee4 Mon Sep 17 00:00:00 2001 From: Roy Duineveld Date: Wed, 31 Jan 2018 10:46:05 +0100 Subject: [PATCH 1/2] Use having instead of where proposal --- src/QueryBuilderParser/QueryBuilderParser.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/QueryBuilderParser/QueryBuilderParser.php b/src/QueryBuilderParser/QueryBuilderParser.php index 8bfec96..ae9fa04 100644 --- a/src/QueryBuilderParser/QueryBuilderParser.php +++ b/src/QueryBuilderParser/QueryBuilderParser.php @@ -13,12 +13,16 @@ class QueryBuilderParser protected $fields; + protected $useHaving; + /** * @param array $fields a list of all the fields that are allowed to be filtered by the QueryBuilder + * @param bool $useHaving should we use "having" instead of "where" in queries */ - public function __construct(array $fields = null) + public function __construct(array $fields = null, bool $useHaving = false) { $this->fields = $fields; + $this->useHaving = $useHaving; } /** @@ -253,6 +257,10 @@ protected function convertIncomingQBtoQuery(Builder $query, stdClass $rule, $val return $this->makeQueryWhenNull($query, $rule, $sqlOperator, $condition); } + if ($this->useHaving) { + return $query->having($rule->field, $sqlOperator['operator'], $value, $condition); + } + return $query->where($rule->field, $sqlOperator['operator'], $value, $condition); } From d3e6a609f629af3c7b1f5478dd92e9dcf9f7b3b9 Mon Sep 17 00:00:00 2001 From: Roy Duineveld Date: Mon, 5 Feb 2018 13:52:19 +0100 Subject: [PATCH 2/2] Update --- src/QueryBuilderParser/QueryBuilderParser.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/QueryBuilderParser/QueryBuilderParser.php b/src/QueryBuilderParser/QueryBuilderParser.php index ae9fa04..05ca363 100644 --- a/src/QueryBuilderParser/QueryBuilderParser.php +++ b/src/QueryBuilderParser/QueryBuilderParser.php @@ -13,16 +13,26 @@ class QueryBuilderParser protected $fields; - protected $useHaving; + protected $useHaving = false; /** * @param array $fields a list of all the fields that are allowed to be filtered by the QueryBuilder - * @param bool $useHaving should we use "having" instead of "where" in queries */ - public function __construct(array $fields = null, bool $useHaving = false) + public function __construct(array $fields = null) { $this->fields = $fields; - $this->useHaving = $useHaving; + } + + /** + * Use "having" instead of "where" in the queries. + * + * @return QueryBuilderParser + */ + public function setUseHaving() + { + $this->useHaving = true; + + return $this; } /**