gpt4 book ai didi

database - 如何在 Laravel 中禁用枚举检查

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:16 26 4
gpt4 key购买 nike

我想在表中添加另一个新的枚举列,但无法迁移,因为它说列已经存在。

迁移

class DesignationColumnNullableInUserTable extends Migration
{
public function __construct()
{
\Illuminate\Support\Facades\DB::getDoctrineSchemaManager()
->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
Type::addType('enum', \Doctrine\DBAL\Types\StringType::class);
}

public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->enum('designation', ['Lawyer', 'Freelancer',
'Corporate secretary', 'Immigration Consultant'])
->nullable()->change();
});
}

public function down()
{
Schema::table('user', function (Blueprint $table) {
$table->dropIfExists('designation');
});
}
}

我还使用外键在另一个迁移中做了一些更改。

\Illuminate\Support\Facades\DB::getDoctrineSchemaManager()
->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');

如何解决枚举检查的这个问题?

最佳答案

Laravel 不支持修改枚举列,因此请使用原始语句:

public function up() {
DB::statement("ALTER TABLE users MODIFY COLUMN designation ENUM('Lawyer', 'Freelancer', 'Corporate secretary', 'Immigration Consultant')");
}

对于 MySQL,您应该能够使用以下内容:

// up
DB::statement("ALTER TABLE users CHANGE designation designation ENUM('Lawyer', 'Freelancer', 'Corporate secretary', 'Immigration Consultant')");

关于database - 如何在 Laravel 中禁用枚举检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com