Skip to content

Commit 576a0f1

Browse files
committed
Respects foreign keys to another database
1 parent b566563 commit 576a0f1

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/Bridges/DibiMysql.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,11 @@ private function createTableIndexes(SqlSchema\Table $table)
214214
private function createTableForeignKeys(SqlSchema\Table $table)
215215
{
216216
$rows = $this->connection->fetchAll('SELECT
217+
KEY_COLUMN_USAGE.TABLE_SCHEMA,
217218
KEY_COLUMN_USAGE.TABLE_NAME,
218219
KEY_COLUMN_USAGE.COLUMN_NAME,
219220
KEY_COLUMN_USAGE.CONSTRAINT_NAME,
221+
KEY_COLUMN_USAGE.REFERENCED_TABLE_SCHEMA,
220222
KEY_COLUMN_USAGE.REFERENCED_TABLE_NAME,
221223
KEY_COLUMN_USAGE.REFERENCED_COLUMN_NAME,
222224
REFERENTIAL_CONSTRAINTS.UPDATE_RULE,
@@ -237,7 +239,8 @@ private function createTableForeignKeys(SqlSchema\Table $table)
237239
$name = $row['CONSTRAINT_NAME'];
238240

239241
if (!isset($fks[$name])) {
240-
$fks[$name] = $table->addForeignKey($name, [], $row['REFERENCED_TABLE_NAME'], [])
242+
$referencedSchema = $row['TABLE_SCHEMA'] !== $row['REFERENCED_TABLE_SCHEMA'] ? $row['REFERENCED_TABLE_SCHEMA'] : NULL;
243+
$fks[$name] = $table->addForeignKey($name, [], ($referencedSchema !== NULL ? "$referencedSchema." : '') . $row['REFERENCED_TABLE_NAME'], [])
241244
->setOnUpdateAction($row['UPDATE_RULE'])
242245
->setOnDeleteAction($row['DELETE_RULE']);
243246
}

src/Utils/Generator.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,11 @@ protected function formatForeignKey($table, $columns)
569569
if (!is_array($columns)) {
570570
$columns = [$columns];
571571
}
572+
573+
if ($pos = strrpos($table, '.')) { // FALSE or 0
574+
$table = substr($table, $pos + 1);
575+
}
576+
572577
return $table . '_fk_' . implode('_', $columns);
573578
}
574579
}

0 commit comments

Comments
 (0)