summaryrefslogtreecommitdiff
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
parent62ed77ab25f8f2cf5103caf572079ebc2b50f6bc (diff)
Migrations: Changed defaults, bug fixes and return object for chaining
-rw-r--r--db/migrations/2018_10_01_000000_create_users_tables.php13
-rw-r--r--db/migrations/ChangesReferences.php23
-rw-r--r--db/migrations/Reference.php12
3 files changed, 31 insertions, 17 deletions
diff --git a/db/migrations/2018_10_01_000000_create_users_tables.php b/db/migrations/2018_10_01_000000_create_users_tables.php
index 52b3658f..5b88511b 100644
--- a/db/migrations/2018_10_01_000000_create_users_tables.php
+++ b/db/migrations/2018_10_01_000000_create_users_tables.php
@@ -36,7 +36,7 @@ class CreateUsersTables extends Migration
});
$this->schema->create('users_personal_data', function (Blueprint $table) {
- $this->referencesUser($table);
+ $this->referencesUser($table, true);
$table->string('first_name', 64)->nullable();
$table->string('last_name', 64)->nullable();
@@ -47,7 +47,7 @@ class CreateUsersTables extends Migration
});
$this->schema->create('users_contact', function (Blueprint $table) {
- $this->referencesUser($table);
+ $this->referencesUser($table, true);
$table->string('dect', 5)->nullable();
$table->string('mobile', 40)->nullable();
@@ -55,7 +55,7 @@ class CreateUsersTables extends Migration
});
$this->schema->create('users_settings', function (Blueprint $table) {
- $this->referencesUser($table);
+ $this->referencesUser($table, true);
$table->string('language', 64);
$table->tinyInteger('theme');
@@ -64,7 +64,7 @@ class CreateUsersTables extends Migration
});
$this->schema->create('users_state', function (Blueprint $table) {
- $this->referencesUser($table);
+ $this->referencesUser($table, true);
$table->boolean('arrived')->default(false);
$table->dateTime('arrival_date')->nullable();
@@ -75,7 +75,7 @@ class CreateUsersTables extends Migration
});
$this->schema->create('password_resets', function (Blueprint $table) {
- $this->referencesUser($table);
+ $this->referencesUser($table, true);
$table->text('token');
@@ -157,8 +157,7 @@ class CreateUsersTables extends Migration
'User',
'UID',
'users',
- 'id',
- 'unsignedInteger'
+ 'id'
);
}
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,
]
diff --git a/db/migrations/Reference.php b/db/migrations/Reference.php
index 4c35b59b..cc4e4fc9 100644
--- a/db/migrations/Reference.php
+++ b/db/migrations/Reference.php
@@ -3,16 +3,18 @@
namespace Engelsystem\Migrations;
use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Schema\ColumnDefinition;
trait Reference
{
/**
* @param Blueprint $table
* @param bool $setPrimary
+ * @return ColumnDefinition
*/
- protected function referencesUser(Blueprint $table, $setPrimary = true)
+ protected function referencesUser(Blueprint $table, $setPrimary = false)
{
- $this->references($table, 'users', 'user_id', $setPrimary);
+ return $this->references($table, 'users', 'user_id', $setPrimary);
}
/**
@@ -20,10 +22,11 @@ trait Reference
* @param string $targetTable
* @param string $fromColumn
* @param bool $setPrimary
+ * @return ColumnDefinition
*/
protected function references(Blueprint $table, $targetTable, $fromColumn, $setPrimary = false)
{
- $table->unsignedInteger($fromColumn);
+ $definition = $table->unsignedInteger($fromColumn);
if ($setPrimary) {
$table->primary($fromColumn);
@@ -31,6 +34,9 @@ trait Reference
$table->foreign($fromColumn)
->references('id')->on($targetTable)
+ ->onUpdate('cascade')
->onDelete('cascade');
+
+ return $definition;
}
}