在 Laravel 9 中执行数据库迁移,修改字段名称,再修改其属性,报错:There is no column with name inbounded_quantity on table return_order_items.
1、在 Laravel 9 中执行数据库迁移,修改字段名称,再修改其属性,报错:There is no column with name inbounded_quantity on table return_order_items.如图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、代码实现如下
Schema::table('return_order_items', function (Blueprint $table) { $table->renameColumn('received_quantity', 'inbounded_quantity'); $table->unsignedInteger('inbounded_quantity')->nullable()->default(0)->comment('已入库数量')->change(); });
3、决定尝试先修改其属性,再修改字段名称。代码实现如下
Schema::table('return_order_items', function (Blueprint $table) { $table->unsignedInteger('received_quantity')->nullable()->default(0)->comment('已入库数量')->change(); $table->renameColumn('received_quantity', 'inbounded_quantity'); });
4、再次执行数据库迁移,执行成功。但是,查看表设计,发现字段注释未修改,不符合预期。如图2
5、由于此字段还未使用到,仅是之前预留的,最后决定先删除字段,再添加字段。代码实现如下
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('return_order_items', function (Blueprint $table) { $table->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、执行迁移后,表结构符合预期。如图3
近期评论