/** * 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; }