LaravelPackages.net
Acme Inc.
Toggle sidebar
staudenmeir/laravel-migration-views

Laravel database migrations with SQL views

1.744.783
219
v1.12
About staudenmeir/laravel-migration-views

staudenmeir/laravel-migration-views is a Laravel package for laravel database migrations with sql views. It currently has 219 GitHub stars and 1.744.783 downloads on Packagist (latest version v1.12). Install it with composer require staudenmeir/laravel-migration-views. Discover more Laravel packages by staudenmeir or browse all Laravel packages to compare alternatives.

Last updated

Laravel Migration Views

CI Code Coverage PHPStan Latest Stable Version Total Downloads License

This Laravel extension adds support for SQL views in database migrations.

Supports Laravel 5.5+.

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 | |:--------|:--------| | 13.x | 1.12 | | 12.x | 1.11 | | 11.x | 1.9 | | 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);

View Processing Algorithm

On MySQL and MariaDB, you can specify the view processing algorithm:

use Staudenmeir\LaravelMigrationViews\Facades\Schema;

$query = DB::table('users')->where('active', true);

Schema::createView('active_users', $query, algorithm: 'TEMPTABLE');

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');

Materialized Views

On PostgreSQL, you can create a materialized view with createMaterializedView():

use Staudenmeir\LaravelMigrationViews\Facades\Schema;

$query = DB::table('users')->where('active', true);

Schema::createMaterializedView('active_users', $query);

Use refreshMaterializedView() to refresh a materialized view:

Schema::refreshMaterializedView('active_users');

Use dropMaterializedView() or dropMaterializedViewIfExists() to drop a materialized view:

Schema::dropMaterializedView('active_users');
Schema::dropMaterializedViewIfExists('active_users');

Use hasMaterializedView() to check whether a materialized view exists:

if (Schema::hasMaterializedView('active_users')) {
    //
}

Contributing

Please see CONTRIBUTING and CODE OF CONDUCT for details.

Star History Chart