protected function findForeignConstraints($schemaName, $tableName)
{
$sql = $this->getShowCreateTable($schemaName, $tableName);
$matches = array();
$regexp = '/FOREIGN KEY\\s+\\(([^\\)]+)\\)\\s+REFERENCES\\s+`?([^`]+)`?\\s\\(([^\\)]+)\\)/mi';
preg_match_all($regexp, $sql, $matches, PREG_SET_ORDER);
$foreign = array();
foreach ($matches as $match) {
$fields = array_map('trim', explode(',', str_replace('`', '', $match[1])));
$fk_fields = array_map('trim', explode(',', str_replace('`', '', $match[3])));
$keys = array();
foreach ($fields as $k => $v) {
$keys[$v] = $fk_fields[$k];
}
$foreign[] = array('keys' => $keys, 'table' => trim($match[2]));
}
return $foreign;
}