staudenmeir / laravel-migration-views
Laravel 数据库迁移使用 SQL 视图
v1.9.1
2024-05-17 15:33 UTC
Requires
- php: ^8.2
- illuminate/database: ^11.0
Requires (Dev)
- orchestra/testbench: ^9.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
README
此 Laravel 扩展增加了数据库迁移中对 SQL 视图的支持。
支持 Laravel 5.5+。
安装
composer require staudenmeir/laravel-migration-views:"^1.0"
如果您在 Windows 的 PowerShell 中(例如,在 VS Code 中),请使用此命令
composer require staudenmeir/laravel-migration-views:"^^^^1.0"
版本
用法
创建视图
使用 createView()
创建视图,并提供查询构建器实例或 SQL 字符串
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $query = DB::table('users')->where('active', true); Schema::createView('active_users', $query);
您可以将视图的列作为第三个参数提供
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $query = 'select id from users where active = 1'; Schema::createView('active_users', $query, ['key']);
使用 createOrReplaceView()
创建视图或替换现有视图
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $query = DB::table('users')->where('active', true); Schema::createOrReplaceView('active_users', $query);
重命名视图
使用 renameView()
重命名视图
use Staudenmeir\LaravelMigrationViews\Facades\Schema; Schema::renameView('active_users', 'users_active');
删除视图
使用 dropView()
或 dropViewIfExists()
删除视图
use Staudenmeir\LaravelMigrationViews\Facades\Schema; Schema::dropView('active_users'); Schema::dropViewIfExists('active_users');
如果您正在使用 php artisan migrate:fresh
,则可以使用 --drop-views
删除所有视图(Laravel 5.6.26+)。
检查视图存在性
使用 hasView()
检查视图是否存在
use Staudenmeir\LaravelMigrationViews\Facades\Schema; if (Schema::hasView('active_users')) { // }
列出视图列
使用 getViewColumnListing()
获取视图的列列表
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $columns = Schema::getViewColumnListing('active_users');
物化视图
在 PostgreSQL 中,您可以使用 createMaterializedView()
创建物化视图
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $query = DB::table('users')->where('active', true); Schema::createMaterializedView('active_users', $query);
使用 refreshMaterializedView()
刷新物化视图
Schema::refreshMaterializedView('active_users');
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CODE OF CONDUCT。