【问题标题】:Update laravel migration to nullable without changing datatype在不更改数据类型的情况下将 laravel 迁移更新为可为空
【发布时间】:2021-04-22 18:15:17
【问题描述】:

在 Laravel 6 中,我有一个表 companies,我想将列 card 更改为可为空。

我创建了一个新的迁移,我可以使用它来更改它

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('companies', function (Blueprint $table) {
        $table->double('card')->nullable()->change();
    });
}

但问题是doctrine/dbal 只支持某些特定的数据类型进行更新。

错误:请求了未知的列类型“double”。任何教义类型 您使用的必须注册 \Doctrine\DBAL\Types\Type::addType()。你可以得到所有的列表 \Doctrine\DBAL\Types\Type::getTypesMap() 的已知类型。

有什么方法可以在不触及其数据类型的情况下将此列更新为可为空?或任何数据库语句?

我可以使用

DB::statement('ALTER TABLE `companies` CHANGE `card` `card` INT NULL DEFAULT NULL;');

但我担心这是正确的做法吗?

【问题讨论】:

    标签: laravel


    【解决方案1】:

    根据 Laravel doc:

    可以修改以下列类型:bigInteger、binary、 boolean, date, dateTime, dateTimeTz, decimal, integer, json, longText,mediumText,smallInteger,字符串,文本,时间, unsignedBigInteger、unsignedInteger、unsignedSmallInteger 和 uuid。

    因此,如果您的列不属于这些类型,它将能够更改

    【讨论】:

    • 谢谢。我知道这一点,但我不想更改数据类型只是想让它可以为空。
    • 当然,将其更改为可为空是一种变化
    猜你喜欢
    • 2017-02-17
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多