Exemplo n.º 1
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.º 2
0
 /**
  * {@inheritDoc}
  */
 public function getAdvancedForeignKeyOptionsSQL(\Doctrine\DBAL\Schema\ForeignKeyConstraint $foreignKey)
 {
     $query = '';
     if ($foreignKey->hasOption('match')) {
         $query .= ' MATCH ' . $foreignKey->getOption('match');
     }
     $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey);
     return $query;
 }
Exemplo n.º 3
0
 /**
  * Return the FOREIGN KEY query section dealing with non-standard options
  * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
  *
  * @param ForeignKeyConstraint $foreignKey     foreign key definition
  * @return string
  */
 public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
 {
     $query = '';
     if ($this->supportsForeignKeyOnUpdate() && $foreignKey->hasOption('onUpdate')) {
         $query .= ' ON UPDATE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onUpdate'));
     }
     if ($foreignKey->hasOption('onDelete')) {
         $query .= ' ON DELETE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete'));
     }
     return $query;
 }
Exemplo n.º 4
0
 /**
  * {@inheritDoc}
  */
 public function getAdvancedForeignKeyOptionsSQL(\Doctrine\DBAL\Schema\ForeignKeyConstraint $foreignKey)
 {
     $query = '';
     if ($foreignKey->hasOption('match')) {
         $query .= ' MATCH ' . $foreignKey->getOption('match');
     }
     $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey);
     if ($foreignKey->hasOption('deferrable') && $foreignKey->getOption('deferrable') !== false) {
         $query .= ' DEFERRABLE';
     } else {
         $query .= ' NOT DEFERRABLE';
     }
     if ($foreignKey->hasOption('feferred') && $foreignKey->getOption('feferred') !== false || $foreignKey->hasOption('deferred') && $foreignKey->getOption('deferred') !== false) {
         $query .= ' INITIALLY DEFERRED';
     } else {
         $query .= ' INITIALLY IMMEDIATE';
     }
     return $query;
 }
Exemplo n.º 5
0
 /**
  * {@inheritdoc}
  */
 public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
 {
     $referentialAction = null;
     if ($foreignKey->hasOption('onDelete')) {
         $referentialAction = $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete'));
     }
     return $referentialAction ? ' ON DELETE ' . $referentialAction : '';
 }