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

使列在Laravel迁移中不可为空

寇和璧
2023-03-14

我正在编写一个迁移,以使表中的某些列可以为null。对于down函数,我当然想再次使那些列不可为空。我查看了schema builder文档,但找不到实现这一点的方法。

任何帮助都将不胜感激。


共有3个答案

葛承德
2023-03-14

首先运行以下命令:

作曲家需要学说/dbal

然后创建一个迁移,该迁移将改变表,如下所示:

php artisan make:migration fix\u which\u table\u name\u此处

public function up()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->type('column')->nullable(false)->change();
    });
}

# Optional:
# public function down()
# {
#     Schema::table('table_name', function ($table) {
#         $table->type('column')->nullable()->change();
#     });
# }
东方智敏
2023-03-14

从Laravel 5开始,可以通过将false作为参数传递给nullable来逆转这一点。

$table->string('foo')->nullable(false)->change();
闻人英韶
2023-03-14

在Laravel5之前,没有LaravelNative方法可以使用模式生成器修改现有的表列。您需要为此使用原始查询。

但是,从Laravel 5开始,您可以使用:

$table->string('foo')->nullable(false)->change();

在运行上述命令之前,必须具有dbal依赖关系:

composer require doctrine/dbal
 类似资料:
  • 问题内容: 我正在编写一个迁移,以立即在表中创建某些列。对于down函数,我当然想再次创建这些列。我浏览了架构生成器docs,但找不到实现此目的的方法。 任何帮助,将不胜感激。 问题答案: 在Laravel 5之前,还没有使用架构生成器来更改现有表列的Laravel本机方式。您需要为此使用原始查询。 但是,从Laravel 5开始,您可以使用:

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

  • 我买了新的MacBook Pro,我在其中安装了mysql,然后安装sequel Pro来查看表和数据库,但是当我命令时,这个错误指控错误图像 近30个小时来,我一直在忍受这个问题,有人能帮我看一下吗

  • 命令命令结果: 问题是我只有users_table,admins_table,volunteers_table,opinions_table和contact_tablelaravel迁移文件夹...他们从哪里来,从哪里迁移... 为什么会产生这个问题基本上我是在laravel应用程序中使用chatify实时聊天软件包所有以上消息收藏夹化身表都是该软件包的一部分,但我已经从laravel应用程序中删

  • 我在文件中的迁移中添加了一个新表。。 这是代码: 当我运行时,我的数据库中只有默认的laravel用户(和迁移)表。没有货币。 原因可能是什么? 编辑 迁移一切都很顺利。问题是: SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节(SQL:更改表用户添加唯一users_email_unique(电子邮件)) SQLSTATE[42000]:语法错误

  • 如果运行,它会失败 未找到基表或视图:1146表*.迁移不存在。 数据库是空的。 如果我运行我会看到迁移表,但它是空的。 DB显示迁移表,但它是空的。 如果我再次运行,数据库再次为空,我会得到相同的错误: 未找到基表或视图:1146表*.迁移不存在。 也许有人知道这里发生了什么。