Using a Progress Bar while Seeding a database in Laravel
Here is my implementation code,
<?phpuse Illuminate\Database\Seeder;class MediaTypeTableSeeder extends Seeder{ /** * Run the database seeds. * * @return void */ public function run() { $media_types = [ ['name'=>'movie'], ['name'=>'channel'], ['name'=>'drama'], // ['name'=>'ebook'], // ['name'=>'shopping'], // ['name'=>'reseller'], // ['name'=>'broadcasting'] ]; $this->command->getOutput()->progressStart(count($media_types)); App\Models\Backoffice\MediaType::query()->delete(); foreach($media_types as $media_type){ App\Models\Backoffice\MediaType::create($media_type); $this->command->getOutput()->progressAdvance(); } $this->command->getOutput()->progressFinish(); }}
Your code isn't working because you're using $this->output
in the wrong class. If you take a look again to the article you shared, $this-output
is used in an Artisan command class.
In fact, every Artisan command is made with the Symfony Console component.
You're actually trying to use it in a database seeder :)
My suggestion: build your seeders and then call them with an "install" or "seed" customized command for your needs.