protected function generateRelations()
{
if (!$this->generateRelations) {
return [];
}
$db = $this->getDbConnection();
if (($pos = strpos($this->tableName, '.')) !== false) {
$schemaName = substr($this->tableName, 0, $pos);
} else {
$schemaName = '';
}
$relations = [];
foreach ($db->getSchema()->getTableSchemas($schemaName) as $table) {
$tableName = $table->name;
foreach ($table->foreignKeys as $refs) {
$refTable = $refs[0];
$refTableName = $this->generateTableName($refTable);
unset($refs[0]);
$fks = implode(']], [[', array_keys($refs));
$pks = implode(']], [[', array_values($refs));
$relation = "FOREIGN KEY ([[{$fks}]]) REFERENCES {$refTableName} ([[{$pks}]]) ON DELETE CASCADE ON UPDATE CASCADE";
$relations[$tableName][$refTable] = $relation;
}
}
return $relations;
}