PHP code example of malikad778 / laravel-migration-guard
1. Go to this page and download the library: Download malikad778/laravel-migration-guard library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
malikad778 / laravel-migration-guard example snippets
// ❌ DANGEROUS
Schema::table('invoices', function (Blueprint $table) {
$table->dropColumn('amount');
});
// ❌ DANGEROUS — locks the table on MySQL < 8.0
Schema::table('users', function (Blueprint $table) {
$table->string('status');
});
// ✅ SAFE
Schema::table('users', function (Blueprint $table) {
$table->string('status')->nullable();
});
// ⚠️ RISKY on tables with millions of rows
Schema::table('orders', function (Blueprint $table) {
$table->index('user_id');
});
// ✅ SAFE — use native syntax for online index creation
DB::statement('ALTER TABLE orders ADD INDEX idx_user_id (user_id) ALGORITHM=INPLACE, LOCK=NONE');
// ❌ DANGEROUS
Schema::table('users', function (Blueprint $table) {
$table->string('bio', 100)->change(); // was VARCHAR(255)
});
// config/migration-guard.php
return [
// Environments where guard is active.
// Empty array = always active.
'environments' => ['production', 'staging'],
// 'warn' -> display warning, let developer abort with Ctrl+C
// 'block' -> throw exception, halt migration immediately
'mode' => env('MIGRATION_GUARD_MODE', 'warn'),
// Toggle individual checks on or off.
'checks' => [
'drop_column' => true,
'drop_table' => true,
'rename_column' => true,
'rename_table' => true,
'add_column_not_null' => true,
'change_column_type' => true,
'add_index' => true,
'modify_primary_key' => true,
'truncate' => true,
],
// Tables that always trigger extra scrutiny for index checks.
'critical_tables' => [
// 'users', 'orders', 'payments',
],
// Row count threshold for automatic large-table detection (