示例#1
0
 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());
 }
示例#2
0
 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;
 }