From 983c457d899aee5a496c01f26ab62d410cd9df67 Mon Sep 17 00:00:00 2001 From: davidecesarano Date: Tue, 24 Aug 2021 16:20:00 +0200 Subject: [PATCH] Fix bug --- Embryo/PDO/QueryBuilder/QueryBuilder.php | 51 ++++++++++++++---------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/Embryo/PDO/QueryBuilder/QueryBuilder.php b/Embryo/PDO/QueryBuilder/QueryBuilder.php index 63f7de0..478353d 100644 --- a/Embryo/PDO/QueryBuilder/QueryBuilder.php +++ b/Embryo/PDO/QueryBuilder/QueryBuilder.php @@ -125,6 +125,18 @@ public function __construct(\PDO $pdo, string $table) $this->table = $table; } + /** + * "SELECT" fields. + * + * @param string[] $field + * @return self + */ + public function select(...$field): self + { + $this->select = (!empty($field)) ? join(', ', $field) : '*'; + return $this; + } + /** * ------------------------------------------------------------ * STATEMENTS @@ -169,19 +181,6 @@ public function delete(): Query return $query; } - /** - * "SELECT" query. - * - * @param string[] $field - * @return Query - */ - public function select(...$field): Query - { - $this->select = (!empty($field)) ? join(', ', $field) : '*'; - $query = $this->execute(); - return $query; - } - /** * SELECT statement shortened. * @@ -189,7 +188,7 @@ public function select(...$field): Query */ public function get() { - $this->select = '*'; + $this->select = empty($this->select) ? '*' : $this->select; $query = $this->execute(); return $query->get(); } @@ -202,7 +201,7 @@ public function get() */ public function all() { - $this->select = '*'; + $this->select = empty($this->select) ? '*' : $this->select; $query = $this->execute(); return $query->all(); } @@ -214,10 +213,10 @@ public function all() * @param string $select * @return object */ - public function paginate(int $perPage = 50, string $select = '*'): object + public function paginate(int $perPage = 50): object { - $this->select = $select; - + $this->select = empty($this->select) ? '*' : $this->select; + $request = (new ServerRequestFactory)->createServerRequestFromServer(); $params = $request->getQueryParams(); $page = isset($params['page']) && $params['page'] != 0 && is_numeric($params['page']) ? (int) $params['page'] : 1; @@ -256,11 +255,23 @@ public function paginate(int $perPage = 50, string $select = '*'): object */ public function debug(): string { - $this->select = '*'; + $this->select = empty($this->select) ? '*' : $this->select; $query = $this->execute(); return $query->debug(); } + /** + * Print query. + * + * @return string + */ + public function print(): string + { + $this->select = empty($this->select) ? '*' : $this->select; + $query = $this->execute(); + return $query->print(); + } + /** * ------------------------------------------------------------ * AGGREGATES @@ -632,7 +643,7 @@ private function addWhere($clause, $field, $operatorValue = null, $value = null) throw new \InvalidArgumentException("First parameter must be a string or callable"); } - if (is_callable($field)) { + if (is_callable($field) && !is_string($field)) { $this->startParentheses = true; call_user_func($field, $this);