Perform database migration in Laravel 9, modify the field name, and then modify its properties, and report an error: There is no column with name inbounded_quantity on table return_order_items.
1. Execute database migration in Laravel 9, modify the field name, and then modify its properties, and report an error: There is no column with name inbounded_quantity on table return_order_items. As shown in Figure 1
PS E:\wwwroot\object> php artisan migrate
INFO Running migrations.
2024_05_27_033321_add_signed_quantity_to_return_order_items_table ..................................................................... 225ms FAIL
Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist
There is no column with name "inbounded_quantity" on table "return_order_items".
at E:\wwwroot\object\vendor\doctrine\dbal\src\Schema\Exception\ColumnDoesNotExist.php:16
12▕ final class ColumnDoesNotExist extends SchemaException
13▕ {
14▕ public static function new(string $columnName, string $table): self
15▕ {
➜ 16▕ return new self(
17▕ sprintf('There is no column with name "%s" on table "%s".', $columnName, $table),
18▕ self::COLUMN_DOESNT_EXIST,
19▕ );
20▕ }
1 E:\wwwroot\object\vendor\doctrine\dbal\src\Schema\SchemaException.php:111
Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist::new("inbounded_quantity", "return_order_items")
2 E:\wwwroot\object\vendor\doctrine\dbal\src\Schema\Table.php:785
Doctrine\DBAL\Schema\SchemaException::columnDoesNotExist("inbounded_quantity", "return_order_items")
PS E:\wwwroot\object>
2. The code is implemented as follows
Schema::table('return_order_items', function (Blueprint $table) {
$table->renameColumn('received_quantity', 'inbounded_quantity');
$table->unsignedInteger('inbounded_quantity')->nullable()->default(0)->comment('已入库数量')->change();
});
3. Decide to try to modify its properties first, and then modify the field name. The code is implemented as follows
Schema::table('return_order_items', function (Blueprint $table) {
$table->unsignedInteger('received_quantity')->nullable()->default(0)->comment('已入库数量')->change();
$table->renameColumn('received_quantity', 'inbounded_quantity');
});
4. Execute the database migration again, and the execution is successful. However, looking at the table design, it is found that the field comments have not been modified and do not meet the expectations. as shown in Figure 2
5. Since this field has not yet been used, it is only reserved before, and finally decided to delete the field first, and then add the field. The code is implemented as follows
dropColumn('received_quantity');
$table->unsignedInteger('inbounded_quantity')->default(0)->comment('已入库数量')->after('return_quantity');
$table->unsignedInteger('signed_quantity')->default(0)->comment('已签收数量');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('return_order_items', function (Blueprint $table) {
$table->dropColumn('inbounded_quantity');
$table->unsignedInteger('received_quantity')->nullable()->comment('已收货数量')->after('return_quantity');
$table->dropColumn('signed_quantity');
});
}
};
6. After the migration is performed, the table structure meets the expectations. as shown in Figure 3


