I've added the doctrine/dbal package and created the migration below. It doesn't seem to want to remove the unsigned flag from the column though. My column is still unsigned after the migration completes.
Create the following migration for a table and run it.
public function up()
{
Schema::table('sales', function (Blueprint $table) {
$table->decimal('amount', 19, 4)->change();
});
}
public function down()
{
Schema::table('sales', function (Blueprint $table) {
$table->decimal('amount', 19, 4)->unsigned()->change();
});
}
I believe that the first line doesn't change the unsigned flag at all, and the second one sets it. Try ->unsigned(false) to disable it.
Interesting, I just did some more testing and by omitting unsigned() on an integer field, it'll remove the unsigned from the field. However, if you omit it on a decimal field like above, it does not remove it. Now sure if that's intended behaviour or a bug.
However, using unsigned(false) does in fact remove the unsigned from both field types, so thank you for that.
I'll close this but I'll ping @taylorotwell @themsaid in case that is in fact a bug.
Most helpful comment
I believe that the first line doesn't change the unsigned flag at all, and the second one sets it. Try
->unsigned(false)to disable it.