Example #1
0
 /**
  * Obtain 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 array $definition
  * @return string
  */
 public function getForeignKeyBaseDeclarationSql(array $definition)
 {
     $sql = '';
     if (isset($definition['name'])) {
         $sql .= ' CONSTRAINT ' . $definition['name'] . ' ';
     }
     $sql .= 'FOREIGN KEY (';
     if (!isset($definition['local'])) {
         throw DoctrineException::localReferenceFieldMissing();
     }
     if (!isset($definition['foreign'])) {
         throw DoctrineException::foreignReferenceFieldMissing();
     }
     if (!isset($definition['foreignTable'])) {
         throw DoctrineException::foreignReferenceTableMissing();
     }
     if (!is_array($definition['local'])) {
         $definition['local'] = array($definition['local']);
     }
     if (!is_array($definition['foreign'])) {
         $definition['foreign'] = array($definition['foreign']);
     }
     $sql .= implode(', ', $definition['local']) . ') REFERENCES ' . $definition['foreignTable'] . '(' . implode(', ', $definition['foreign']) . ')';
     return $sql;
 }