diff --git a/SqlBuilder.php b/SqlBuilder.php index cad9a9f..2861d39 100644 --- a/SqlBuilder.php +++ b/SqlBuilder.php @@ -51,7 +51,7 @@ class SqlBuilder extends Component */ public function getCondition(): string { - return $this->where($this->query->where); + return $this->where($this->query->getWhere()); } @@ -73,9 +73,9 @@ class SqlBuilder extends Component */ public function update(array $attributes): bool|string { - $conditions = $this->query->params; - $this->query->params = []; - $data = $this->__updateBuilder($this->makeParams($attributes)); + $conditions = $this->query->getParams(); + $this->query->setParams([]); + $data = $this->__updateBuilder($this->makeParams($attributes)); foreach ($conditions as $condition) { $this->query->pushParam($condition); } @@ -109,7 +109,7 @@ class SqlBuilder extends Component if (empty($string)) { return Kiri::getLogger()->failure('None data update.'); } - return 'UPDATE ' . $this->query->from . ' SET ' . implode(',', $string) . $this->make(); + return 'UPDATE ' . $this->query->getFrom() . ' SET ' . implode(',', $string) . $this->make(); } @@ -121,7 +121,7 @@ class SqlBuilder extends Component */ public function insert(array $attributes, bool $isBatch = false): string { - $update = 'INSERT INTO ' . $this->query->from; + $update = 'INSERT INTO ' . $this->query->getFrom(); if ($isBatch === false) { $attributes = [$attributes]; } @@ -143,7 +143,7 @@ class SqlBuilder extends Component */ public function delete(): string { - return 'DELETE FROM ' . $this->query->from . $this->make(); + return 'DELETE FROM ' . $this->query->getFrom() . $this->make(); } @@ -215,7 +215,7 @@ class SqlBuilder extends Component */ public function one(): string { - return $this->makeSelect($this->query->select) . $this->make() . $this->makeLimit($this->query->limit(1)); + return $this->makeSelect($this->query->getSelect()) . $this->make() . $this->makeLimit($this->query->limit(1)); } @@ -225,7 +225,7 @@ class SqlBuilder extends Component */ public function all(): string { - return $this->makeSelect($this->query->select) . $this->make() . $this->makeLimit($this->query); + return $this->makeSelect($this->query->getSelect()) . $this->make() . $this->makeLimit($this->query); } @@ -277,12 +277,12 @@ class SqlBuilder extends Component */ private function makeSelect(array $select = ['*']): string { - $select = "SELECT " . implode(',', $select) . " FROM " . $this->query->from; - if ($this->query->alias != "") { - $select .= " AS " . $this->query->alias; + $select = "SELECT " . implode(',', $select) . " FROM " . $this->query->getFrom(); + if ($this->query->getAlias() != "") { + $select .= " AS " . $this->query->getAlias(); } - if (count($this->query->join) > 0) { - $select .= ' ' . implode(' ', $this->query->join); + if (count($this->query->getJoin()) > 0) { + $select .= ' ' . implode(' ', $this->query->getJoin()); } return $select; } @@ -293,8 +293,8 @@ class SqlBuilder extends Component */ private function makeGroup(): string { - if ($this->query->group != "") { - return ' GROUP BY ' . $this->query->group; + if ($this->query->getGroup() != "") { + return ' GROUP BY ' . $this->query->getGroup(); } return ''; } @@ -305,8 +305,8 @@ class SqlBuilder extends Component */ private function makeOrder(): string { - if (count($this->query->order) > 0) { - return ' ORDER BY ' . implode(',', $this->query->order); + if (count($this->query->getOrder()) > 0) { + return ' ORDER BY ' . implode(',', $this->query->getOrder()); } return ''; } @@ -317,7 +317,7 @@ class SqlBuilder extends Component */ private function makeCondition(): string { - $condition = $this->where($this->query->where); + $condition = $this->where($this->query->getWhere()); if (empty($condition)) { return ''; } @@ -327,8 +327,8 @@ class SqlBuilder extends Component private function makeLimit(): string { - if ($this->query->offset >= 0 && $this->query->limit >= 1) { - return ' LIMIT ' . $this->query->offset . ',' . $this->query->limit; + if ($this->query->getOffset() >= 0 && $this->query->getLimit() >= 1) { + return ' LIMIT ' . $this->query->getOffset() . ',' . $this->query->getLimit(); } return ''; } @@ -354,7 +354,7 @@ class SqlBuilder extends Component */ public function truncate(): string { - return sprintf('TRUNCATE %s', $this->query->from); + return sprintf('TRUNCATE %s', $this->query->getFrom()); } diff --git a/Traits/QueryTrait.php b/Traits/QueryTrait.php index 7867282..0519ac7 100644 --- a/Traits/QueryTrait.php +++ b/Traits/QueryTrait.php @@ -64,32 +64,191 @@ abstract class QueryTrait extends Component implements ActiveQueryInterface, ISq /** - * @param string $name - * @return mixed - * @throws Exception + * @param array $where + * @return void */ - public function __get(string $name) + public function setWhere(array $where): void { - if (property_exists($this, $name)) { - return $this->$name; - } - return parent::__get($name); // TODO: Change the autogenerated stub + $this->where = $where; } /** - * @param string $name - * @param $value + * @param array $select * @return void - * @throws Exception */ - public function __set(string $name, $value): void + public function setSelect(array $select): void { - if (property_exists($this, $name)) { - $this->{$name} = $value; - } else { - parent::__set($name, $value); // TODO: Change the autogenerated stub - } + $this->select = $select; + } + + + /** + * @param array $join + * @return void + */ + public function setJoin(array $join): void + { + $this->join = $join; + } + + + /** + * @param array $order + * @return void + */ + public function setOrder(array $order): void + { + $this->order = $order; + } + + + /** + * @param int $offset + * @return void + */ + public function setOffset(int $offset): void + { + $this->offset = $offset; + } + + + /** + * @param int $limit + * @return void + */ + public function setLimit(int $limit): void + { + $this->limit = $limit; + } + + + /** + * @param string $group + * @return void + */ + public function setGroup(string $group): void + { + $this->group = $group; + } + + + /** + * @param string $from + * @return void + */ + public function setFrom(string $from): void + { + $this->from = $from; + } + + + /** + * @param string $alias + * @return void + */ + public function setAlias(string $alias): void + { + $this->alias = $alias; + } + + /** + * @param array $params + * @return void + */ + public function setParams(array $params): void + { + $this->params = $params; + } + + + /** + * @return array + */ + public function getWhere(): array + { + return $this->where; + } + + + /** + * @return array|string[] + */ + public function getSelect(): array + { + return $this->select; + } + + + /** + * @return array + */ + public function getJoin(): array + { + return $this->join; + } + + + /** + * @return array + */ + public function getOrder(): array + { + return $this->order; + } + + + /** + * @return int + */ + public function getOffset(): int + { + return $this->offset; + } + + + /** + * @return int + */ + public function getLimit(): int + { + return $this->limit; + } + + + /** + * @return string + */ + public function getGroup(): string + { + return $this->group; + } + + + /** + * @return string + */ + public function getFrom(): string + { + return $this->from; + } + + + /** + * @return string + */ + public function getAlias(): string + { + return $this->alias; + } + + + /** + * @return array + */ + public function getParams(): array + { + return $this->params; }