From 6f188dbafe6d8c7397fd96fcbc31fe9ec7a4eaa8 Mon Sep 17 00:00:00 2001 From: Mike Bronner Date: Mon, 16 Oct 2017 20:27:18 -0700 Subject: [PATCH 1/2] WIP --- src/CachedBuilder.php | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/CachedBuilder.php b/src/CachedBuilder.php index 767561a..b0e9b7f 100644 --- a/src/CachedBuilder.php +++ b/src/CachedBuilder.php @@ -94,15 +94,11 @@ protected function getWhereClauses(array $wheres = []) : string } $value = array_get($where, 'value'); - $value .= in_array($where['type'], ['In', 'Null', 'NotNull']) - ? strtolower($where['type']) - : ''; - $value .= is_array(array_get($where, 'values')) - ? '_' . implode('_', $where['values']) - : ''; + $value .= $this->getTypeClause($where); + $value .= $this->getValuesClause($where); return "{$carry}-{$where['column']}_{$value}"; - }) ?: ''; + }) . ''; } protected function getWithModels() : string @@ -246,4 +242,18 @@ public function sum($column) return parent::sum($column); }); } + + protected function getTypeClause($where) + { + return in_array($where['type'], ['In', 'Null', 'NotNull']) + ? strtolower($where['type']) + : ''; + } + + protected function getValuesClause($where) + { + return is_array(array_get($where, 'values')) + ? '_' . implode('_', $where['values']) + : ''; + } } From 7d5c4adf1e238c2f0ce27cc40bcc839addc43a56 Mon Sep 17 00:00:00 2001 From: Mike Bronner Date: Mon, 16 Oct 2017 20:35:22 -0700 Subject: [PATCH 2/2] WIP --- src/CachedBuilder.php | 49 ++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/src/CachedBuilder.php b/src/CachedBuilder.php index b0e9b7f..9c0d06d 100644 --- a/src/CachedBuilder.php +++ b/src/CachedBuilder.php @@ -74,31 +74,27 @@ protected function getQueryColumns(array $columns) : string protected function getWhereClauses(array $wheres = []) : string { - $wheres = collect($wheres); - - if ($wheres->isEmpty()) { - $wheres = collect($this->query->wheres); - } - - return $wheres->reduce(function ($carry, $where) { - if (in_array($where['type'], ['Exists', 'Nested', 'NotExists'])) { - return '_' . strtolower($where['type']) . $this->getWhereClauses($where['query']->wheres); - } + return $this->getWheres($wheres) + ->reduce(function ($carry, $where) { + if (in_array($where['type'], ['Exists', 'Nested', 'NotExists'])) { + return '_' . strtolower($where['type']) . $this->getWhereClauses($where['query']->wheres); + } - if ($where['type'] === 'Column') { - return "_{$where['boolean']}_{$where['first']}_{$where['operator']}_{$where['second']}"; - } + if ($where['type'] === 'Column') { + return "_{$where['boolean']}_{$where['first']}_{$where['operator']}_{$where['second']}"; + } - if ($where['type'] === 'raw') { - return "_{$where['boolean']}_" . str_slug($where['sql']); - } + if ($where['type'] === 'raw') { + return "_{$where['boolean']}_" . str_slug($where['sql']); + } - $value = array_get($where, 'value'); - $value .= $this->getTypeClause($where); - $value .= $this->getValuesClause($where); + $value = array_get($where, 'value'); + $value .= $this->getTypeClause($where); + $value .= $this->getValuesClause($where); - return "{$carry}-{$where['column']}_{$value}"; - }) . ''; + return "{$carry}-{$where['column']}_{$value}"; + }) + . ''; } protected function getWithModels() : string @@ -256,4 +252,15 @@ protected function getValuesClause($where) ? '_' . implode('_', $where['values']) : ''; } + + protected function getWheres(array $wheres) : Collection + { + $wheres = collect($wheres); + + if ($wheres->isEmpty()) { + $wheres = collect($this->query->wheres); + } + + return $wheres; + } }