没有不值得去解决的问题,也没有不值得去学习的技术!

在 Laravel 9 中执行数据库迁移,修改字段名称,再修改其属性,报错:There is no column with name inbounded_quantity on table return_order_items.

在 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
在 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
再次执行数据库迁移,执行成功。但是,查看表设计,发现字段注释未修改,不符合预期
图2
5、由于此字段还未使用到,仅是之前预留的,最后决定先删除字段,再添加字段。代码实现如下
<pre class="wp-block-syntaxhighlighter-code">

<?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');
        });
    }
};


</pre>
6、执行迁移后,表结构符合预期。如图3
执行迁移后,表结构符合预期
图3

PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理