summaryrefslogtreecommitdiff
path: root/db/migrations/ChangesReferences.php
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2019-07-28 16:26:24 +0200
committerIgor Scheller <igor.scheller@igorshp.de>2019-07-29 00:58:06 +0200
commitc1f6374f377d7b6d2aeefa464837226279a521a3 (patch)
tree09fca5da559a43a94ea93cf13aeb7696f059e2db /db/migrations/ChangesReferences.php
parent62ed77ab25f8f2cf5103caf572079ebc2b50f6bc (diff)
Migrations: Changed defaults, bug fixes and return object for chaining
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,
]