diff --git a/src/Schema/AbstractSchemaManager.php b/src/Schema/AbstractSchemaManager.php index 25630ea4ed8..ab890718ffd 100644 --- a/src/Schema/AbstractSchemaManager.php +++ b/src/Schema/AbstractSchemaManager.php @@ -230,26 +230,15 @@ public function listTables(): array continue; } - $editor = Table::editor() - ->setName($tableName) - ->setColumns($this->_getPortableTableColumnList($tableName, $database, $tableColumns)) - ->setIndexes( - $this->_getPortableTableIndexesList($indexColumnsByTable[$tableName] ?? [], $tableName), - ); - - if (isset($foreignKeyColumnsByTable[$tableName])) { - $editor->setForeignKeyConstraints( - $this->_getPortableTableForeignKeysList($foreignKeyColumnsByTable[$tableName]), - ); - } - - if (isset($tableOptionsByTable[$tableName])) { - $editor->setOptions($tableOptionsByTable[$tableName]); - } - - $tables[] = $editor - ->setConfiguration($configuration) - ->create(); + $tables[] = new Table( + $tableName, + $this->_getPortableTableColumnList($tableName, $database, $tableColumns), + $this->_getPortableTableIndexesList($indexColumnsByTable[$tableName] ?? [], $tableName), + [], + $this->_getPortableTableForeignKeysList($foreignKeyColumnsByTable[$tableName] ?? []), + $tableOptionsByTable[$tableName] ?? [], + $configuration, + ); } return $tables; @@ -464,13 +453,14 @@ public function introspectTable(string $name): Table throw TableDoesNotExist::new($name); } - return Table::editor() - ->setName($name) - ->setColumns($columns) - ->setIndexes($this->listTableIndexes($name)) - ->setForeignKeyConstraints($this->listTableForeignKeys($name)) - ->setOptions($this->getTableOptions($name)) - ->create(); + return new Table( + $name, + $columns, + $this->listTableIndexes($name), + [], + $this->listTableForeignKeys($name), + $this->getTableOptions($name), + ); } /** diff --git a/src/Schema/Schema.php b/src/Schema/Schema.php index 72f23afa8d6..8d4f41d2403 100644 --- a/src/Schema/Schema.php +++ b/src/Schema/Schema.php @@ -371,14 +371,13 @@ public function createNamespace(string $name): self */ public function createTable(string $name): Table { - $table = Table::editor() - ->setName($name) - ->setOptions($this->_schemaConfig->getDefaultTableOptions()) - ->setConfiguration($this->_schemaConfig->toTableConfiguration()) - ->create(); - + $table = new Table($name, [], [], [], [], [], $this->_schemaConfig->toTableConfiguration()); $this->_addTable($table); + foreach ($this->_schemaConfig->getDefaultTableOptions() as $option => $value) { + $table->addOption($option, $value); + } + return $table; } diff --git a/src/Schema/Table.php b/src/Schema/Table.php index 65d6b3dd25c..7c01428f378 100644 --- a/src/Schema/Table.php +++ b/src/Schema/Table.php @@ -72,9 +72,6 @@ class Table extends AbstractNamedObject private int $maxIdentifierLength; /** - * @internal Use {@link Table::editor()} to instantiate an editor and {@link TableEditor::create()} - * to create a table. - * * @param array $columns * @param array $indexes * @param array $uniqueConstraints @@ -873,7 +870,7 @@ public static function editor(): TableEditor public function edit(): TableEditor { return self::editor() - ->setName($this->getObjectName()->toString()) + ->setName($this->getObjectName()) ->setColumns($this->_columns) ->setIndexes($this->_indexes) ->setUniqueConstraints($this->uniqueConstraints) diff --git a/src/Schema/TableEditor.php b/src/Schema/TableEditor.php index c3384dabef4..66bc01cc153 100644 --- a/src/Schema/TableEditor.php +++ b/src/Schema/TableEditor.php @@ -5,10 +5,11 @@ namespace Doctrine\DBAL\Schema; use Doctrine\DBAL\Schema\Exception\InvalidTableDefinition; +use Doctrine\DBAL\Schema\Name\OptionallyQualifiedName; final class TableEditor { - private ?string $name = null; + private ?OptionallyQualifiedName $name = null; /** @var array */ private array $columns = []; @@ -32,7 +33,7 @@ public function __construct() { } - public function setName(string $name): self + public function setName(OptionallyQualifiedName $name): self { $this->name = $name; @@ -93,7 +94,7 @@ public function create(): Table } return new Table( - $this->name, + $this->name->toString(), $this->columns, $this->indexes, $this->uniqueConstraints, diff --git a/tests/Schema/TableEditorTest.php b/tests/Schema/TableEditorTest.php index 714f1932c5d..e541463ba66 100644 --- a/tests/Schema/TableEditorTest.php +++ b/tests/Schema/TableEditorTest.php @@ -5,6 +5,7 @@ namespace Doctrine\DBAL\Tests\Schema; use Doctrine\DBAL\Schema\Exception\InvalidTableDefinition; +use Doctrine\DBAL\Schema\Name\OptionallyQualifiedName; use Doctrine\DBAL\Schema\Table; use PHPUnit\Framework\TestCase; @@ -12,12 +13,14 @@ class TableEditorTest extends TestCase { public function testSetName(): void { + $name = OptionallyQualifiedName::unquoted('contacts'); + $table = (new Table('accounts')) ->edit() - ->setName('contacts') + ->setName($name) ->create(); - self::assertSame('contacts', $table->getName()); + self::assertEquals($name, $table->getObjectName()); } public function testNameNotSet(): void