在 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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、代码实现如下
1 2 3 4 | Schema::table( 'return_order_items' , function (Blueprint $table ) { $table ->renameColumn( 'received_quantity' , 'inbounded_quantity' ); $table ->unsignedInteger( 'inbounded_quantity' )->nullable()-> default (0)->comment( '已入库数量' )->change(); }); |
3、决定尝试先修改其属性,再修改字段名称。代码实现如下
1 2 3 4 | 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、由于此字段还未使用到,仅是之前预留的,最后决定先删除字段,再添加字段。代码实现如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?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
近期评论