Difflock: Lint Laravel Migrations and Diff Your Schema
Difflock is a migration linter and schema diffing tool for Laravel that flags destructive changes, dropped columns, and unindexed foreign keys in CI/CD before deployment.
Schema Safety with Difflock
Database migrations are often the highest-risk step in continuous deployment pipelines. Accidental column renames, missing foreign key indexes, and table locking operations can cause unexpected downtime on production databases. Difflock is an open-source schema diffing and migration linting tool tailored specifically for Laravel.
Catching Destructive Changes in CI/CD
Difflock analyzes your migration files against a snapshot of your current production schema. It instantly detects risky patterns such as:
- Dropping columns without zero-downtime deprecation steps.
- Adding non-nullable columns without fallback default values.
- Creating foreign keys without underlying indexes, leading to cascading table locks.
- Modifying large table structures on PostgreSQL or MySQL that trigger full table rewrites.
Running the Difflock Linter
# Install Difflock via Composer
composer require --dev difflock/difflock-laravel
# Run migration lint check
php artisan difflock:lint
# Output:
# [FAIL] 2026_09_18_000001_update_orders_table.php
# Line 18: Dropping column 'legacy_status' without a 2-step migration strategy.
# Line 22: Added foreignId 'customer_id' missing index on large table 'orders'.
By embedding php artisan difflock:lint into your GitHub Actions workflow, your team can guarantee zero database regression accidents.