当前位置: 首页 > 知识库问答 >
问题:

Laravel迁移更改列的默认值

汪鸿波
2023-03-14

我有一个已经分配了默认值的表。例如,我们可以查看以下内容:

Schema::create('users', function (Blueprint $table) {
            $table->increments('id')->unsigned();
            $table->integer('active')->default(1);
        });

现在我想更改活动字段的默认值。我期待着做这样的事情:

if (Schema::hasTable('users')) {
        Schema::table('users', function (Blueprint $table) {
            if (Schema::hasColumn('users', 'active')) {
                $table->integer('active')->default(0);
            }
        });
    }

但它当然告诉我专栏已经在那里了。如何简单地更新x列的默认值而不删除该列?

共有3个答案

都博裕
2023-03-14

创建新的迁移文件.并使用Change()

if (Schema::hasTable('users')) {
    Schema::table('users', function (Blueprint $table) {
        if (Schema::hasColumn('users', 'active')) {
            $table->integer('active')->default(0)->change();
        }
    });
}

并且确保将原则/dbal依赖项添加到composer.json文件

阎辰钊
2023-03-14

您必须调用change函数来更新列

if (Schema::hasTable('users')) {
    Schema::table('users', function (Blueprint $table) {
        if (Schema::hasColumn('users', 'active')) {
            $table->integer('active')->default(0)->change();
        }
    });
}
霍浩皛
2023-03-14

可以使用Change()方法:

Schema::table('users', function ($table) {
    $table->integer('active')->default(0)->change();
});

然后运行迁移命令。

使现代化

对于Laravel 4,请使用以下内容:

DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');

up()方法内部,而不是Schema::table() 子句。

 类似资料:
  • 我不明白迁移中的选项会产生什么影响。 我可以看到数据库中的列是用默认值定义的,但是模型完全忽略了它。假设我有一个反映数据库中表的模型。我必须迁移才能创建books表: 当我创建一个新的模型实例时,我看到: 默认值被忽略,属性设置不正确。好的,我可以得到它,因为它是一个新对象,它不应该从数据库中获取默认值。但是如果我试图保存模型,比如: 在数据库的字段中保存0! 那么,迁移中的选项有什么意义呢? 顺

  • 我用未签名的创建了一个迁移。如何在新迁移中编辑,使其也可以?

  • 我正在上进行开发,并在本地环境和生产环境中进行以下迁移。 我想用以下经过调整的字段来更改迁移: 由于我正在生产中使用当前的迁移,我不希望丢失数据。 我只是尝试用我的新表定义修改迁移文件,但我得到了: 有什么建议如何在Laravel适当地改变迁移? 谢谢你的回复!

  • 问题内容: 尝试更改列的数据类型并设置新的默认值时遇到以下错误: 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’VARCHAR(255)NOT NULL SET DEFAULT’{}’‘附近使用正确的语法 问题答案: 同样的第二种可能性(感谢juergen_d):

  • 在尝试更改列的数据类型并设置新的默认值时,我遇到以下错误: 错误1064(42000):您的SQL语法中有错误;查看与您的MySQL server版本相对应的手册,以了解第1行“varchar(255)NOT NULL SET DEFAULT”{}“附近使用的正确语法

  • 本文向大家介绍Laravel 更改默认应用目录,包括了Laravel 更改默认应用目录的使用技巧和注意事项,需要的朋友参考一下 示例 在某些情况下,您可能希望将应用程序目录重命名为其他名称。在Laravel4中,您可以更改配置条目,这是在Laravel5中完成配置的一种方法。 在此示例中,我们将app目录重命名为src。 覆盖应用程序类 目录名app被硬编码到核心Application类中,因此必