summaryrefslogtreecommitdiff
path: root/db/migrations/ChangesReferences.php
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrations/ChangesReferences.php')
-rw-r--r--db/migrations/ChangesReferences.php23
1 files changed, 16 insertions, 7 deletions
diff --git a/db/migrations/ChangesReferences.php b/db/migrations/ChangesReferences.php
index 6bdd187d..84156c7b 100644
--- a/db/migrations/ChangesReferences.php
+++ b/db/migrations/ChangesReferences.php
@@ -3,6 +3,7 @@
namespace Engelsystem\Migrations;
use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Schema\Builder as SchemaBuilder;
use stdClass;
trait ChangesReferences
@@ -14,24 +15,30 @@ trait ChangesReferences
* @param string $targetColumn
* @param string $type
*/
- protected function changeReferences($fromTable, $fromColumn, $targetTable, $targetColumn, $type)
+ protected function changeReferences($fromTable, $fromColumn, $targetTable, $targetColumn, $type = 'unsignedInteger')
{
$references = $this->getReferencingTables($fromTable, $fromColumn);
foreach ($references as $reference) {
/** @var stdClass $reference */
- $this->schema->table($reference->table, function (Blueprint $table) use ($reference) {
+ /** @var SchemaBuilder $schema */
+ $schema = $this->schema;
+
+ $schema->table($reference->table, function (Blueprint $table) use ($reference) {
$table->dropForeign($reference->constraint);
});
- $this->schema->table($reference->table,
+ $schema->table(
+ $reference->table,
function (Blueprint $table) use ($reference, $targetTable, $targetColumn, $type) {
$table->{$type}($reference->column)->change();
$table->foreign($reference->column)
->references($targetColumn)->on($targetTable)
+ ->onUpdate('cascade')
->onDelete('cascade');
- });
+ }
+ );
}
}
@@ -42,8 +49,10 @@ trait ChangesReferences
*/
protected function getReferencingTables($table, $column): array
{
- return $this->schema
- ->getConnection()
+ /** @var SchemaBuilder $schema */
+ $schema = $this->schema;
+
+ return $schema->getConnection()
->select(
'
SELECT
@@ -56,7 +65,7 @@ trait ChangesReferences
AND REFERENCED_COLUMN_NAME = ?
',
[
- $this->schema->getConnection()->getDatabaseName(),
+ $schema->getConnection()->getDatabaseName(),
$table,
$column,
]