From b54a15cb8ad7f1dca4ea73a9d61a39d92d0d145f Mon Sep 17 00:00:00 2001 From: Mokhlas Hussein Date: Sat, 23 Jan 2021 06:24:42 +0100 Subject: [PATCH 1/5] fixed issue with default for boolean type column --- src/Generators/MigrationGenerator.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Generators/MigrationGenerator.php b/src/Generators/MigrationGenerator.php index 471c91c0..e50f62e1 100644 --- a/src/Generators/MigrationGenerator.php +++ b/src/Generators/MigrationGenerator.php @@ -203,7 +203,13 @@ protected function buildDefinition(Model $model) foreach ($modifiers as $modifier) { if (is_array($modifier)) { - $column_definition .= sprintf("->%s('%s')", key($modifier), addslashes(current($modifier))); + $modifierKey = key($modifier); + $modifierValue = addslashes(current($modifier)); + if ($dataType === 'boolean' && $modifierKey === 'default') { + $column_definition .= sprintf("->%s(%s)", $modifierKey, $modifierValue); + } else { + $column_definition .= sprintf("->%s('%s')", $modifierKey, $modifierValue); + } } elseif ($modifier === 'unsigned' && Str::startsWith($dataType, 'unsigned')) { continue; } elseif ($modifier === 'nullable' && Str::startsWith($dataType, 'nullable')) { From b14f9088e48bf539f8ed2fbd164bee5453f1e3bf Mon Sep 17 00:00:00 2001 From: Mokhlas Hussein Date: Sat, 23 Jan 2021 06:50:57 +0100 Subject: [PATCH 2/5] added tinyinteger support --- src/Generators/MigrationGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Generators/MigrationGenerator.php b/src/Generators/MigrationGenerator.php index e50f62e1..f79c2d6f 100644 --- a/src/Generators/MigrationGenerator.php +++ b/src/Generators/MigrationGenerator.php @@ -205,7 +205,7 @@ protected function buildDefinition(Model $model) if (is_array($modifier)) { $modifierKey = key($modifier); $modifierValue = addslashes(current($modifier)); - if ($dataType === 'boolean' && $modifierKey === 'default') { + if (($dataType === 'boolean' || $dataType === 'tinyinteger') && $modifierKey === 'default') { $column_definition .= sprintf("->%s(%s)", $modifierKey, $modifierValue); } else { $column_definition .= sprintf("->%s('%s')", $modifierKey, $modifierValue); From d8e200ae2208f2bd8aa8d181765cb31ec94605a4 Mon Sep 17 00:00:00 2001 From: Nathan Esayeas Date: Mon, 1 Feb 2021 20:28:01 -0500 Subject: [PATCH 3/5] Add test for boolean column default modifier Supersedes: #420 --- .../Generators/MigrationGeneratorTest.php | 1 + .../drafts/boolean-column-default.yaml | 8 ++++ .../migrations/boolean-column-default.php | 37 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 tests/fixtures/drafts/boolean-column-default.yaml create mode 100644 tests/fixtures/migrations/boolean-column-default.php diff --git a/tests/Feature/Generators/MigrationGeneratorTest.php b/tests/Feature/Generators/MigrationGeneratorTest.php index 314b628a..35fb9709 100644 --- a/tests/Feature/Generators/MigrationGeneratorTest.php +++ b/tests/Feature/Generators/MigrationGeneratorTest.php @@ -868,6 +868,7 @@ public function modelTreeDataProvider() ['drafts/resource-statements.yaml', 'database/migrations/timestamp_create_users_table.php', 'migrations/resource-statements.php'], ['drafts/enum-options.yaml', 'database/migrations/timestamp_create_messages_table.php', 'migrations/enum-options.php'], ['drafts/columns-with-comments.yaml', 'database/migrations/timestamp_create_professions_table.php', 'migrations/columns-with-comments.php'], + ['drafts/boolean-column-default.yaml', 'database/migrations/timestamp_create_posts_table.php', 'migrations/boolean-column-default.php'], ]; } } diff --git a/tests/fixtures/drafts/boolean-column-default.yaml b/tests/fixtures/drafts/boolean-column-default.yaml new file mode 100644 index 00000000..4b54418a --- /dev/null +++ b/tests/fixtures/drafts/boolean-column-default.yaml @@ -0,0 +1,8 @@ +models: + Post: + title: string:400 + content: longtext + show: boolean default:1 + hide: boolean default:0 + draft: boolean default:true + published: boolean default:false diff --git a/tests/fixtures/migrations/boolean-column-default.php b/tests/fixtures/migrations/boolean-column-default.php new file mode 100644 index 00000000..aa0d913c --- /dev/null +++ b/tests/fixtures/migrations/boolean-column-default.php @@ -0,0 +1,37 @@ +id(); + $table->string('title', 400); + $table->longText('content'); + $table->boolean('show')->default(1); + $table->boolean('hide')->default(0); + $table->boolean('draft')->default(true); + $table->boolean('published')->default(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('posts'); + } +} From 00f5cc58b6ad15dc6afc9d52d151a38a6b34521f Mon Sep 17 00:00:00 2001 From: Nathan Esayeas Date: Mon, 1 Feb 2021 20:53:27 -0500 Subject: [PATCH 4/5] Refactor --- src/Generators/MigrationGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Generators/MigrationGenerator.php b/src/Generators/MigrationGenerator.php index f79c2d6f..25d8d08d 100644 --- a/src/Generators/MigrationGenerator.php +++ b/src/Generators/MigrationGenerator.php @@ -205,7 +205,7 @@ protected function buildDefinition(Model $model) if (is_array($modifier)) { $modifierKey = key($modifier); $modifierValue = addslashes(current($modifier)); - if (($dataType === 'boolean' || $dataType === 'tinyinteger') && $modifierKey === 'default') { + if (in_array($dataType, ['boolean', 'tinyinteger'], true) && $modifierKey === 'default') { $column_definition .= sprintf("->%s(%s)", $modifierKey, $modifierValue); } else { $column_definition .= sprintf("->%s('%s')", $modifierKey, $modifierValue); From d1b0bc9e7500e17b56c1122d323f84cd6803e42e Mon Sep 17 00:00:00 2001 From: Jason McCreary Date: Tue, 2 Feb 2021 09:10:21 -0500 Subject: [PATCH 5/5] Remove unnecessary strict type check --- src/Generators/MigrationGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Generators/MigrationGenerator.php b/src/Generators/MigrationGenerator.php index 25d8d08d..b39c4609 100644 --- a/src/Generators/MigrationGenerator.php +++ b/src/Generators/MigrationGenerator.php @@ -205,7 +205,7 @@ protected function buildDefinition(Model $model) if (is_array($modifier)) { $modifierKey = key($modifier); $modifierValue = addslashes(current($modifier)); - if (in_array($dataType, ['boolean', 'tinyinteger'], true) && $modifierKey === 'default') { + if (in_array($dataType, ['boolean', 'tinyinteger']) && $modifierKey === 'default') { $column_definition .= sprintf("->%s(%s)", $modifierKey, $modifierValue); } else { $column_definition .= sprintf("->%s('%s')", $modifierKey, $modifierValue);