Installation:
composer require riftweb/superseeder
php artisan migrate
seeder_executions table migration automatically.First Trackable Seeder:
php artisan make:superseeder FirstSeeder
TrackableSeed trait pre-included.Basic Usage:
// Database/Seeders/FirstSeeder.php
public function run()
{
// Your seeding logic here
DB::table('users')->insert([...]);
}
Run via:
php artisan db:seed --class=FirstSeeder
php artisan db:seed --class=FirstSeeder --force # Only works if not previously run
Tracked Seeding:
// Automatically tracked via trait
class UsersSeeder extends Seeder {
use TrackableSeed;
// ...
}
seeder_executions table.Batch Management:
php artisan db:seed --class=UserSeeder,RoleSeeder,PermissionSeeder
Rollbacks:
php artisan db:rollback --class=UsersSeeder
run() logic (requires manual rollback() method).public function rollback()
{
DB::table('users')->where('created_at', '>', now()->subDays(7))->delete();
}
public function shouldRun()
{
return User::count() === 0;
}
php artisan db:seed --class=UsersSeeder --bypass
Dependency Management:
protected $dependencies = ['RolesSeeder', 'PermissionsSeeder'];
Environment-Specific Seeders:
public function shouldRun()
{
return app()->environment('local');
}
Rollback Limitations:
rollback() manually.DB::transaction() in run() for atomicity.Duplicate Executions:
--force (use cautiously in production).Missing seeder_executions Table:
php artisan migrate will cause TrackableSeed to fail silently.Batch Failures:
SELECT * FROM seeder_executions ORDER BY created_at DESC;
SUPERSEEDER_DEBUG=true
storage/logs/laravel.log.Custom Execution Table:
config/superseeder.php:
'table' => 'custom_seeder_logs',
Event Hooks:
SuperSeeder.Ran or SuperSeeder.Rollback events:
event(new SuperSeederRan($seeder, $batch));
Custom Generator:
make:superseeder command by publishing the template:
php artisan vendor:publish --tag=superseeder-templates
User::chunk(1000, function ($users) {
// Process chunk
});
config/superseeder.php:
'batch_size' => 5, // Max seeders per transaction
--bypass flag; no tracking occurs. Use for one-off fixes.How can I help you explore Laravel packages today?