Mastering Laravel Console Commands: Implementing A Progress Bar
Published on April 9, 2024 by Dinesh Uprety
Progress Bar
A progress bar is a graphical user interface element used to visualize the progress of a task. It typically consists of a horizontal bar that gradually fills up as the task progresses, indicating the percentage of completion.
withProgressBar()

$this->withProgressBar( User::all(), function (User $user) { sleep(seconds: 1); } );
The withProgressBar() method is used to create a progress bar while iterating over a collection. In this case, it iterates over all users fetched from the database (User::all()).
Inside the closure function passed to withProgressBar(), each user is processed. Here, it seems to simulate some task with a sleep() function call to pause execution for 1 second.
progress()

progress( label: 'Loading User', steps: User::all(), callback: function (User $user) { sleep(1); });
Another progress bar implementation utilizing the progress() function from Laravel Prompts package.
It takes three arguments:
label: A string label indicating what the progress is for, in this case, 'Loading User'.steps: The steps to iterate over, here again all users are fetched usingUser::all().callback: A closure function that gets executed for each step. Similar towithProgressBar(), it also simulates some processing with asleep()function call.
Concusion
In summary, this command demonstrates two different approaches to implementing progress bars in Laravel console commands. The withProgressBar() method is a built-in Laravel feature, while the progress() function originates from a third-party package, Laravel Prompts.
Senior Software Engineer • Writer @ Laranepal • PHP, Laravel, Livewire, TailwindCSS & VueJS • CEO @ Laranepal & Founder @ laracodesnap