make:exportable-seeder
make:exportable-seeder
Generate a new seeder class with the ExportableSeeder trait.
Signature
php artisan make:exportable-seeder {name} {--model=} {--unique-by=} {--json-filename=}Arguments
name
The name of the seeder class to create (required).
php artisan make:exportable-seeder UserSeeder
php artisan make:exportable-seeder ProductSeeder
php artisan make:exportable-seeder CompanySeederThe class is created in database/seeders/{name}.php.
Options
--model
Specify the Eloquent model class that this seeder imports into.
php artisan make:exportable-seeder UserSeeder --model=App\\Models\\User
php artisan make:exportable-seeder UserSeeder --model=UserIf provided, it's automatically added to the seeder class.
--unique-by
Set the unique column(s) for upserting records.
php artisan make:exportable-seeder UserSeeder --unique-by=email
php artisan make:exportable-seeder ProductSeeder --unique-by=skuFor composite keys, use comma-separated values:
php artisan make:exportable-seeder TenantUserSeeder --unique-by=tenant_id,email--json-filename
Specify the JSON filename (relative to the storage path).
php artisan make:exportable-seeder UserSeeder --json-filename=users.json
php artisan make:exportable-seeder UserSeeder --json-filename=seeds/users.jsonIf not provided, the filename defaults to the snake_case plural form of the model name plus .json:
User→users.jsonProduct→products.jsonCompanyProfile→company_profiles.json
Examples
Basic Seeder
php artisan make:exportable-seeder UserSeeder --model=UserGenerated file at database/seeders/UserSeeder.php:
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
use OiLab\OiLaravelSeeds\Traits\ExportableSeeder;
class UserSeeder extends Seeder
{
use ExportableSeeder;
protected string $jsonFilename = 'users.json';
protected string $modelClass = User::class;
protected string $uniqueBy = 'id';
public function run(): void
{
$this->importData();
}
}With Custom Unique Column
php artisan make:exportable-seeder UserSeeder --model=User --unique-by=emailGenerated file sets $uniqueBy = 'email'.
With Custom JSON Filename
php artisan make:exportable-seeder RoleSeeder --model=Role --json-filename=roles.jsonGenerated file sets $jsonFilename = 'roles.json'.
With Composite Key
php artisan make:exportable-seeder TenantUserSeeder --model=TenantUser --unique-by=tenant_id,user_idGenerated file sets $uniqueBy = ['tenant_id', 'user_id'].
Generated Class Structure
The generated seeder class includes:
ExportableSeedertrait$jsonFilenameproperty — the JSON file to read from$modelClassproperty — the model to import into$uniqueByproperty — the unique identifier column(s)run()method — calls$this->importData()
The generated seeder is ready to use immediately. You can:
- Create the JSON file in your storage path
- Run
php artisan db:seed --class=UserSeeder
Or generate JSON from your database:
- Add records to your database
- Run
php artisan seed:export --seeder=UserSeeder - Check the generated JSON file
Next Steps
- Installation — See the quick start workflow
- The ExportableSeeder Trait — Understand all available properties and methods
- Commands — Learn about seed:export and seed:import