Prevent Destructive Commands From Running in Laravel

As of Laravel 11.9 you can now prevent commands like database migrations from accidentally running in production environments with a Prohibitable trait:

use Illuminate\Console\Command;
use Illuminate\Console\Prohibitable;

class SomeDestructiveCommand extends Command
    use Prohibitable;

// SomeDestructiveCommand::prohibit($this->app->isProduction());

The Laravel framework includes some database commands that include the Prohibitable trait, such as db:wipe, migrate:fresh, migrate:refresh, and migrate:reset:

public function boot(): void

Using the DB Facade, you can prohibit destructive database commands built into Laravel:

// Prohibits: db:wipe, migrate:fresh, migrate:refresh, and migrate:reset

The prohibit() method accepts a Boolean argument that defaults to true, and you can conditionally prevent commands from running using whatever logic you need, so that you can still run them in development environments:

public function boot(): void

The post Prevent Destructive Commands From Running in Laravel appeared first on Laravel News.

Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.

Read more

© 2024 Extly, CB - All rights reserved.