database - 如何在 Laravel 中禁用枚举检查
问题描述
我想在表中添加另一个新的枚举列,但无法迁移,因为它说列已经存在。
移民
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')");
推荐阅读
- excel - 比较重复列中的单元格对Excel VBA
- typescript - 无法在完整日历版本 5.6.0 中使用 slotLabelFormat
- c# - 对弹性搜索结果的并发请求 null
- html - 我的 ionic/angular pwa 的通知徽章出现在 chrome 浏览器图标上,而不是应用程序图标上
- node.js - 在 windows powershell 中使用 npm-v
- git - 我是否需要 git pull main 而不仅仅是 git fetch 才能从最新的 main 重新定位另一个分支?
- python - 如何在 Python 中实现一个函数来计算圆环上两个任意点之间的欧几里得距离
- g++ - 从以极坐标表示的点创建 PCL 库 PointCloud 实例
- angular - 在 Angular 中自动居中地图 - Angular AGM-Direction
- json - 在编译时迭代 JSON,在 Dlang 中