protected function getForeignConstraints($schemaName, $tableName)
{
$andSchema = $schemaName !== null ? 'AND TABLE_SCHEMA LIKE :schema' : 'AND TABLE_SCHEMA LIKE DATABASE()';
$sql = <<<EOD
\t\t\tSELECT
\t\t\t\tCONSTRAINT_NAME as con,
\t\t\t\tCOLUMN_NAME as col,
\t\t\t\tREFERENCED_TABLE_SCHEMA as fkschema,
\t\t\t\tREFERENCED_TABLE_NAME as fktable,
\t\t\t\tREFERENCED_COLUMN_NAME as fkcol
\t\t\tFROM
\t\t\t\t`INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE`
\t\t\tWHERE
\t\t\t\tREFERENCED_TABLE_NAME IS NOT NULL
\t\t\t\tAND TABLE_NAME LIKE :table
\t\t\t\t{$andSchema}
EOD;
$command = $this->getDbConnection()->createCommand($sql);
$command->bindValue(':table', $tableName);
if ($schemaName !== null) {
$command->bindValue(':schema', $schemaName);
}
$fkeys = array();
foreach ($command->query() as $col) {
$fkeys[$col['con']]['keys'][$col['col']] = $col['fkcol'];
$fkeys[$col['con']]['table'] = $col['fktable'];
}
return count($fkeys) > 0 ? array_values($fkeys) : $fkeys;
}