/**
  * {@inheritDoc}
  */
 public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey)
 {
     return parent::getForeignKeyDeclarationSQL(new ForeignKeyConstraint($foreignKey->getQuotedLocalColumns($this), str_replace('.', '__', $foreignKey->getQuotedForeignTableName($this)), $foreignKey->getQuotedForeignColumns($this), $foreignKey->getName(), $foreignKey->getOptions()));
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function getForeignKeyBaseDeclarationSQL(ForeignKeyConstraint $foreignKey)
 {
     $sql = '';
     $foreignKeyName = $foreignKey->getName();
     $localColumns = $foreignKey->getQuotedLocalColumns($this);
     $foreignColumns = $foreignKey->getQuotedForeignColumns($this);
     $foreignTableName = $foreignKey->getQuotedForeignTableName($this);
     if (!empty($foreignKeyName)) {
         $sql .= 'CONSTRAINT ' . $foreignKey->getQuotedName($this) . ' ';
     }
     if (empty($localColumns)) {
         throw new \InvalidArgumentException("Incomplete definition. 'local' required.");
     }
     if (empty($foreignColumns)) {
         throw new \InvalidArgumentException("Incomplete definition. 'foreign' required.");
     }
     if (empty($foreignTableName)) {
         throw new \InvalidArgumentException("Incomplete definition. 'foreignTable' required.");
     }
     if ($foreignKey->hasOption('notnull') && (bool) $foreignKey->getOption('notnull')) {
         $sql .= 'NOT NULL ';
     }
     return $sql . 'FOREIGN KEY (' . $this->getIndexFieldDeclarationListSQL($localColumns) . ') ' . 'REFERENCES ' . $foreignKey->getQuotedForeignTableName($this) . ' (' . $this->getIndexFieldDeclarationListSQL($foreignColumns) . ')';
 }
Exemplo n.º 3
0
 /**
  * Obtains DBMS specific SQL code portion needed to set the FOREIGN KEY constraint
  * of a field declaration to be used in statements like CREATE TABLE.
  *
  * @param \Doctrine\DBAL\Schema\ForeignKeyConstraint $foreignKey
  *
  * @return string
  *
  * @throws \InvalidArgumentException
  */
 public function getForeignKeyBaseDeclarationSQL(ForeignKeyConstraint $foreignKey)
 {
     $sql = '';
     if (strlen($foreignKey->getName())) {
         $sql .= 'CONSTRAINT ' . $foreignKey->getQuotedName($this) . ' ';
     }
     $sql .= 'FOREIGN KEY (';
     if (count($foreignKey->getLocalColumns()) === 0) {
         throw new \InvalidArgumentException("Incomplete definition. 'local' required.");
     }
     if (count($foreignKey->getForeignColumns()) === 0) {
         throw new \InvalidArgumentException("Incomplete definition. 'foreign' required.");
     }
     if (strlen($foreignKey->getForeignTableName()) === 0) {
         throw new \InvalidArgumentException("Incomplete definition. 'foreignTable' required.");
     }
     $sql .= implode(', ', $foreignKey->getQuotedLocalColumns($this)) . ') REFERENCES ' . $foreignKey->getQuotedForeignTableName($this) . ' (' . implode(', ', $foreignKey->getQuotedForeignColumns($this)) . ')';
     return $sql;
 }