This module provides automatic seeder discovery and execution for all modules.
- Auto-discovery: Automatically finds and runs seeders from enabled modules
- Config-based: Uses module
config.jsonto determine which seeders to run - Smart naming: Automatically guesses seeder names from module names
- Pluralization handling: Intelligently handles plural module names (e.g.,
nuc_modules→ModuleSeeder)
The SeederDiscoveryService is automatically used by the DatabaseSeeder to discover and call all module seeders.
use App\Services\SeederDiscoveryService;
public function run(): void
{
$discoveryService = app(SeederDiscoveryService::class);
$discoveryService->discoverAndCallSeeders($this);
}- Scans all directories in
modules/ - Reads each module's
config.json - Only runs seeders for modules with
"installed": trueand"enabled": true - Finds the seeder using:
- Explicit
"seeder": "SeederName"field in config.json - OR auto-guesses from module name
- Explicit
nuc_modules→ModuleSeeder(trims trailing 's')nuc_files→FileSeeder(trims trailing 's')nuc_entities→EntitiesSeeder(keeps 'ies')nuc_friendship→FriendshipSeeder(no 's' to trim)
Add to your module's config.json:
{
"name": "nuc_your_module",
"seeder": "YourModuleSeeder",
"installed": true,
"enabled": true
}"seeder": "SeederName"- Explicit seeder class name"seeder": false- Explicitly disable seeder for this module (e.g., service-only modules)- No
seederfield - Auto-guess seeder name from module name