staudenmeir / laravel-migration-views
Laravel database migrations with SQL views
Installs: 366 100
Dependents: 5
Suggesters: 0
Security: 0
Stars: 153
Watchers: 4
Forks: 12
Open Issues: 2
Requires
- php: ^8.1
- illuminate/database: ^10.0
Requires (Dev)
- orchestra/testbench: ^8.0
README
This Laravel extension adds support for SQL views in database migrations.
Supports Laravel 5.5.25+.
Installation
composer require staudenmeir/laravel-migration-views:"^1.0"
Use this command if you are in PowerShell on Windows (e.g. in VS Code):
composer require staudenmeir/laravel-migration-views:"^^^^1.0"
Versions
Laravel | Package |
---|---|
10.x | 1.7 |
9.x | 1.6 |
8.x | 1.5 |
7.x | 1.4 |
6.x | 1.2 |
5.8 | 1.1 |
5.5–5.7 | 1.0 |
Usage
Creating Views
Use createView()
to create a view and provide a query builder instance or an SQL string:
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $query = DB::table('users')->where('active', true); Schema::createView('active_users', $query);
You can provide the view's columns as the third argument:
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $query = 'select id from users where active = 1'; Schema::createView('active_users', $query, ['key']);
Use createOrReplaceView()
to create a view or replace the existing one:
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $query = DB::table('users')->where('active', true); Schema::createOrReplaceView('active_users', $query);
Renaming Views
Use renameView()
to rename a view:
use Staudenmeir\LaravelMigrationViews\Facades\Schema; Schema::renameView('active_users', 'users_active');
Dropping Views
Use dropView()
or dropViewIfExists()
to drop a view:
use Staudenmeir\LaravelMigrationViews\Facades\Schema; Schema::dropView('active_users'); Schema::dropViewIfExists('active_users');
If you are using php artisan migrate:fresh
, you can drop all views with --drop-views
(Laravel 5.6.26+).
Checking For View Existence
Use hasView()
to check whether a view exists:
use Staudenmeir\LaravelMigrationViews\Facades\Schema; if (Schema::hasView('active_users')) { // }
Listing View Columns
Use getViewColumnListing()
to get the column listing for a view:
use Staudenmeir\LaravelMigrationViews\Facades\Schema; $columns = Schema::getViewColumnListing('active_users');
Contributing
Please see CONTRIBUTING and CODE OF CONDUCT for details.