根据 this answer ,如果我想更新 MySQL 中的 enum
,我必须运行原始查询。但是对于 PostgreSQL,我不能使用这个查询,而且 Laravel 中 PostgreSQL 的枚举类型看起来很奇怪。
有什么方法可以更新 postgreSQL 迁移中的枚举吗?
最佳答案
Laravel 在 enum
的 character varying
上使用约束。
假设有一个表 mytable
有一个枚举列 status
,我们必须删除约束(名为 tablename_columnname _检查) 然后将其添加到这样的迁移中:
DB::transaction(function () {
DB::statement('ALTER TABLE mytable DROP CONSTRAINT mytable_status_check;');
DB::statement('ALTER TABLE mytable ADD CONSTRAINT mytable_status_check CHECK (status::TEXT = ANY (ARRAY[\'pending\'::CHARACTER VARYING, \'accepted\'::CHARACTER VARYING, \'canceled\'::CHARACTER VARYING]::TEXT[]))');
});
解决了问题,希望对你有帮助!
关于postgresql - 使用 PostgreSQL 更新 Laravel 迁移中的枚举列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30873928/