123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- declare(strict_types=1);
- /**
- * This file is part of Hyperf.
- *
- * @link https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact group@hyperf.io
- * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
- namespace Hyperf\Database\Schema;
- use Hyperf\Database\Query\Processors\MySqlProcessor;
- class MySqlBuilder extends Builder
- {
- /**
- * Determine if the given table exists.
- *
- * @param string $table
- */
- public function hasTable($table): bool
- {
- $table = $this->connection->getTablePrefix() . $table;
- return count($this->connection->select(
- $this->grammar->compileTableExists(),
- [$this->connection->getDatabaseName(), $table]
- )) > 0;
- }
- /**
- * Get the column listing for a given table.
- *
- * @param string $table
- */
- public function getColumnListing($table): array
- {
- $table = $this->connection->getTablePrefix() . $table;
- $results = $this->connection->select(
- $this->grammar->compileColumnListing(),
- [$this->connection->getDatabaseName(), $table]
- );
- return $this->connection->getPostProcessor()->processColumnListing($results);
- }
- /**
- * Get the columns.
- */
- public function getColumns(): array
- {
- $results = $this->connection->select(
- $this->grammar->compileColumns(),
- [
- $this->connection->getDatabaseName(),
- ]
- );
- return $this->connection->getPostProcessor()->processColumns($results);
- }
- /**
- * Get the column type listing for a given table.
- *
- * @param string $table
- * @return array
- */
- public function getColumnTypeListing($table)
- {
- $table = $this->connection->getTablePrefix() . $table;
- $results = $this->connection->select(
- $this->grammar->compileColumnListing(),
- [$this->connection->getDatabaseName(), $table]
- );
- /** @var MySqlProcessor $processor */
- $processor = $this->connection->getPostProcessor();
- return $processor->processListing($results);
- }
- /**
- * Drop all tables from the database.
- */
- public function dropAllTables(): void
- {
- $tables = [];
- foreach ($this->getAllTables() as $row) {
- $row = (array) $row;
- $tables[] = reset($row);
- }
- if (empty($tables)) {
- return;
- }
- $this->disableForeignKeyConstraints();
- $this->connection->statement(
- $this->grammar->compileDropAllTables($tables)
- );
- $this->enableForeignKeyConstraints();
- }
- /**
- * Drop all views from the database.
- */
- public function dropAllViews(): void
- {
- $views = [];
- foreach ($this->getAllViews() as $row) {
- $row = (array) $row;
- $views[] = reset($row);
- }
- if (empty($views)) {
- return;
- }
- $this->connection->statement(
- $this->grammar->compileDropAllViews($views)
- );
- }
- /**
- * Get all the table names for the database.
- *
- * @return array
- */
- public function getAllTables()
- {
- return $this->connection->select(
- $this->grammar->compileGetAllTables()
- );
- }
- /**
- * Get all the view names for the database.
- *
- * @return array
- */
- protected function getAllViews()
- {
- return $this->connection->select(
- $this->grammar->compileGetAllViews()
- );
- }
- }
|