【发布时间】:2020-09-03 22:19:02
【问题描述】:
我使用 laravel migartion 创建一些表,然后为使用我的表的视图创建迁移。 现在,我想更改此视图中使用的列的类型(我为其创建一个新的迁移。)。但是,PostgreSQL 不允许我更改列类型,因为视图中使用了列。我想知道解决这个问题的最佳方法是什么。
我尝试使用创建视图的迁移来删除然后在更改列类型后重新创建它,但存在问题,因为迁移没有命名空间,我不知道这是解决此问题的好方法。
【问题讨论】:
我使用 laravel migartion 创建一些表,然后为使用我的表的视图创建迁移。 现在,我想更改此视图中使用的列的类型(我为其创建一个新的迁移。)。但是,PostgreSQL 不允许我更改列类型,因为视图中使用了列。我想知道解决这个问题的最佳方法是什么。
我尝试使用创建视图的迁移来删除然后在更改列类型后重新创建它,但存在问题,因为迁移没有命名空间,我不知道这是解决此问题的好方法。
【问题讨论】:
我用以下级别解决了我的问题:
在project/database/migrations/ 中添加文件夹common-queries
在composer.json 中添加CommonQueries 命名空间和project/database/migrations/common-queries 文件夹位置。
在class MyCurrentView 中添加我的观点create 和drop(例如)。
在旧的迁移up和down函数中使用这个类来创建和删除视图
在更改列类型之前在新迁移和删除视图中使用此类,并在更改列类型后创建视图。
【讨论】:
首先,我的英语不好。我的理解是,您正在使用已经存在的表创建一个新的迁移?如果表已经存在,那么您可以尝试使用此更改列名
Schema::table('users', function (Blueprint $table) {
$table->string('name', 50)->change();
});
【讨论】: