diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-03-09 11:04:51 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-03-09 14:07:27 +0900 |
| commit | e014d9778f739956104caf686c70639914045281 (patch) | |
| tree | eccd80968b787e88d239644be8d21ce8ecec2c4c /services/app/src/Sql | |
| parent | 8eaa76b2364b64ba32b10263f36404b472e10a28 (diff) | |
| download | phperkaigi-2024-albatross-e014d9778f739956104caf686c70639914045281.tar.gz phperkaigi-2024-albatross-e014d9778f739956104caf686c70639914045281.tar.zst phperkaigi-2024-albatross-e014d9778f739956104caf686c70639914045281.zip | |
add /admin/stats/
Diffstat (limited to 'services/app/src/Sql')
| -rw-r--r-- | services/app/src/Sql/Internal/Select.php | 4 | ||||
| -rw-r--r-- | services/app/src/Sql/QueryBuilder.php | 13 |
2 files changed, 13 insertions, 4 deletions
diff --git a/services/app/src/Sql/Internal/Select.php b/services/app/src/Sql/Internal/Select.php index cf3f77a..d5943aa 100644 --- a/services/app/src/Sql/Internal/Select.php +++ b/services/app/src/Sql/Internal/Select.php @@ -33,7 +33,7 @@ final class Select public function __construct( private readonly QueryBuilder $sql, - private readonly string $table, + private readonly string|Select $table, ) { } @@ -94,7 +94,7 @@ final class Select /** * @internal */ - public function _getTable(): string + public function _getTable(): string|Select { return $this->table; } diff --git a/services/app/src/Sql/QueryBuilder.php b/services/app/src/Sql/QueryBuilder.php index 3a5443b..f6aee00 100644 --- a/services/app/src/Sql/QueryBuilder.php +++ b/services/app/src/Sql/QueryBuilder.php @@ -27,7 +27,7 @@ final class QueryBuilder ) { } - public function select(string $table): Select + public function select(string|Select $table): Select { return new Select($this, $table); } @@ -57,6 +57,11 @@ final class QueryBuilder $this->conn->exec($sql); } + public function raw(string $sql): void + { + $this->conn->exec($sql); + } + /** * @internal * @param Select $select @@ -87,7 +92,11 @@ final class QueryBuilder return "SELECT " . implode(', ', $fields) . - " FROM $table" . + ( + $table instanceof Select + ? " FROM (" . $this->compileSelect($table) . ")" + : " FROM $table" + ) . ($join !== null ? " $join->type $join->table ON $join->on" : '') . ($where !== '' ? " WHERE $where" : '') . ( |
