在 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



近期评论