postgresql - 使用 PostgreSQL 更新 Laravel 迁移中的枚举列

标签 postgresql laravel laravel-5 laravel-migrations

根据 this answer ,如果我想更新 MySQL 中的 enum,我必须运行原始查询。但是对于 PostgreSQL,我不能使用这个查询,而且 Laravel 中 PostgreSQL 的枚举类型看起来很奇怪。

有什么方法可以更新 postgreSQL 迁移中的枚举吗?

最佳答案

Laravel 在 enumcharacter 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/

相关文章:

php - Laravel:如何用 Eloquent 方式表达 HAVING COUNT

laravel - 操作 Laravel 默认登录认证

rest - laravel/lumen REST API 间歇性地修改 env 并使用 'forge' 数据库

postgresql - golang 应用程序如何在 aws 服务器中使用 docker 与 postgres 通信?

php - Laravel 4 队列

c# - 使用C#同步不同数据库中的两个表

php - file_put_contents(.../bootstrap/cache/services.json) : failed to open stream: No such file or directory

javascript - 基于Javascript Condition渲染 Blade 模板

ruby-on-rails - 在Windows上安装Postgres以与Ruby-on-Rails一起使用

postgresql - PostgREST 在子查询或 CTE 中使用限制和偏移量