public function test() { $constraint = new UniqueKey('foo', 'column'); $this->assertSame('foo', $constraint->getName()); $this->assertSame('UNIQUE KEY `foo` (`column`)', $constraint->buildCreate()); $this->assertSame('ADD CONSTRAINT `foo` UNIQUE (`column`)', $constraint->buildAdd()); $this->assertSame('DROP INDEX `foo`', $constraint->buildDrop()); $constraint = new UniqueKey('foo', 'column', 'column2'); $this->assertSame('foo', $constraint->getName()); $this->assertSame('UNIQUE KEY `foo` (`column`, `column2`)', $constraint->buildCreate()); $this->assertSame('ADD CONSTRAINT `foo` UNIQUE (`column`, `column2`)', $constraint->buildAdd()); $this->assertSame('DROP INDEX `foo`', $constraint->buildDrop()); }
public final function setUniqueKeyObject(UniqueKey $unique_key) : TableInterface { if ($this->isImmutable()) { throw SchemaException::immutable(static::class); } if ($this->hasUniqueKey($unique_key->getName())) { throw SchemaException::uniqueKeyAlreadySet(static::class, $unique_key->getName()); } $missing = array_diff($unique_key->getColumns(), array_keys($this->getColumns())); if ($missing !== []) { throw TableException::columnNotSet(static::class, implode(', ', $missing)); } $this->unique_keys[$unique_key->getName()] = $unique_key; return $this; }