<?php namespace Doctrine\DBAL\Schema; use Doctrine\DBAL\Platforms\AbstractPlatform; use function array_keys; use function array_map; use function strtolower; /** * Class for a unique constraint. */ class UniqueConstraint extends AbstractAsset implements Constraint { /** * Asset identifier instances of the column names the unique constraint is associated with. * array($columnName => Identifier) * * @var Identifier[] */ protected $columns = []; /** * Platform specific flags. * array($flagName => true) * * @var true[] */ protected $flags = []; /** * Platform specific options. * * @var mixed[] */ private array $options; /** * @param string[] $columns * @param string[] $flags * @param mixed[] $options */ public function __construct(string $name, array $columns, array $flags = [], array $options = []) { $this->_setName($name); $this->options = $options; foreach ($columns as $column) { $this->addColumn($column); } foreach ($flags as $flag) { $this->addFlag($flag); } } /** * {@inheritdoc} */ public function getColumns() { return array_keys($this->columns); } /** * {@inheritdoc} */ public function getQuotedColumns(AbstractPlatform $platform) { $columns = []; foreach ($this->columns as $column) { $columns[] = $column->getQuotedName($platform); } return $columns; } /** @return string[] */ public function getUnquotedColumns(): array { return array_map([$this, 'trimQuotes'], $this->getColumns()); } /** * Returns platform specific flags for unique constraint. * * @return string[] */ public function getFlags(): array { return array_keys($this->flags); } /** * Adds flag for a unique constraint that translates to platform specific handling. * * @return $this * * @example $uniqueConstraint->addFlag('CLUSTERED') */ public function addFlag(string $flag): UniqueConstraint { $this->flags[strtolower($flag)] = true; return $this; } /** * Does this unique constraint have a specific flag? */ public function hasFlag(string $flag): bool { return isset($this->flags[strtolower($flag)]); } /** * Removes a flag. */ public function removeFlag(string $flag): void { unset($this->flags[strtolower($flag)]); } /** * Does this unique constraint have a specific option? */ public function hasOption(string $name): bool { return isset($this->options[strtolower($name)]); } /** @return mixed */ public function getOption(string $name) { return $this->options[strtolower($name)]; } /** @return mixed[] */ public function getOptions(): array { return $this->options; } /** * Adds a new column to the unique constraint. */ protected function addColumn(string $column): void { $this->columns[$column] = new Identifier($column); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Exception | Folder | 0755 |
|
|
Visitor | Folder | 0755 |
|
|
AbstractAsset.php | File | 6 KB | 0644 |
|
AbstractSchemaManager.php | File | 49.85 KB | 0644 |
|
Column.php | File | 9.38 KB | 0644 |
|
ColumnDiff.php | File | 4.14 KB | 0644 |
|
Comparator.php | File | 23.55 KB | 0644 |
|
Constraint.php | File | 1.04 KB | 0644 |
|
DB2SchemaManager.php | File | 12.66 KB | 0644 |
|
DefaultSchemaManagerFactory.php | File | 578 B | 0644 |
|
ForeignKeyConstraint.php | File | 11.03 KB | 0644 |
|
Identifier.php | File | 666 B | 0644 |
|
Index.php | File | 8.72 KB | 0644 |
|
LegacySchemaManagerFactory.php | File | 455 B | 0644 |
|
MySQLSchemaManager.php | File | 17.87 KB | 0644 |
|
OracleSchemaManager.php | File | 16.03 KB | 0644 |
|
PostgreSQLSchemaManager.php | File | 23.13 KB | 0644 |
|
SQLServerSchemaManager.php | File | 18.6 KB | 0644 |
|
Schema.php | File | 12.66 KB | 0644 |
|
SchemaConfig.php | File | 2.4 KB | 0644 |
|
SchemaDiff.php | File | 7.53 KB | 0644 |
|
SchemaException.php | File | 5.41 KB | 0644 |
|
SchemaManagerFactory.php | File | 381 B | 0644 |
|
Sequence.php | File | 3.28 KB | 0644 |
|
SqliteSchemaManager.php | File | 22.02 KB | 0644 |
|
Table.php | File | 27.74 KB | 0644 |
|
TableDiff.php | File | 9.61 KB | 0644 |
|
UniqueConstraint.php | File | 3.19 KB | 0644 |
|
View.php | File | 445 B | 0644 |
|