Xeed generates new model, seed, Nova resources, database seed, factory and migration files for Laravel & Nova based on data from the existing database table.
cable8mm/xeed is a Laravel package for xeed generates new model, seed, nova resources, database seed, factory and migration files for laravel & nova based on data from the existing database table..
It currently has 88 GitHub stars and 3.630 downloads on Packagist (latest version v2.0.2).
Install it with composer require cable8mm/xeed.
Discover more Laravel packages by cable8mm
or browse all Laravel packages to compare alternatives.
Last updated
Xeed generates new model, seed, Nova resources, database seed, factory and migration files for Laravel & Nova based on data from the existing database table.
Laravel already has migrations and factories, but:
Xeed solves this by generating everything from your real schema.
[!TIP] It can function as both
php artisan xeed:*commands for Laravel & Nova providing 100% identical functionality. Therefore, you can use it within your own Laravel & Nova project.
We have provided the API Documentation on the web. For more information, please visit https://www.palgle.com/xeed/ ❤️

composer require cable8mm/xeed --dev
All commands use the current database connection to generate files automatically.
Global options:
-f Force overwrite existing files
Models:
# Generate all models from database in `app/Models` folder
php artisan xeed:model
php artisan xeed:model -f
Factories:
# Generate all factories from database in `database/factories' folder
php artisan xeed:factory
Seeders:
# Generate all seeds from database in `database/seeders` folder
php artisan xeed:seeder
# Generate all seeds from database in `database/seeders` folder
php artisan xeed:faker-seeder
Migrations:
# Generate a database seed from database in `database/seeders` folder
php artisan xeed:database
Migrations:
# Generate all migrations from database in `database/migrations' folder
php artisan xeed:migration
Relations:
xeed:relationupdates existing models, so generate models first if they do not already exist.
# Add relation functions to existing models in `app/Models` folder
php artisan xeed:relation
# Force overwrite existing model files while adding relation functions
php artisan xeed:relation -f
Nova:
# Add the Laravel Nova resources to all tables in `app/Nova` folder
php artisan xeed:nova
Cleanup:
# Clean generated files, seeders, models, factories and migration files.
php artisan xeed:wipe
# Modify all files to comply with the PSR-12.
composer lint
# Inspect all files to ensure compliance with PSR-12.
composer inspect
Xeed uses an isolated SQLite database during tests, ensuring your real database is never affected.
The test bootstrap recreates tests/Generate/database.sqlite when needed and loads the xeeds table automatically from database/xeeds.sqlite.sql.
# Run `vendor/bin/testbench package:test tests`
composer testpack
# Run `vendor/bin/phpunit tests`
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
The below can help you contribute.
The Xeed has a built-in SQLite database, allowing you to contribute easily without needing your own database. Simply create a new file for testing purposes and utilize it.
You do not need to commit tests/Generate/database.sqlite; the test bootstrap recreates it automatically when you run the test suite.
# Create a new empty file for SQLite database
touch tests/Generate/database.sqlite
And then,
# Run tests
composer test
For migrations and factories, when you need to execute tests for all database field types, utilize the following command.
# Import an 'xeeds' Table into the Database
php artisan xeed
# Drop the 'xeeds' Table from the Database
php artisan xeed drop
Utilize migration files for all database field types by referring to the following location database/*.sql these files are saved in the specified folder.
testorchestral/testbenchYou can utilize testorchestral/testbench to execute tests. When running Laravel commands, the generated files are saved in the vendor/orchestra/testbench-core/laravel/database folder.
Laravel columns description for mysql:
| Available Column Types | Field | Type | Null | Key | Default | Extra | | ------------------------------------------------ | ------------------------ | --------------------------- | ---- | --- | ------- | -------------- | | id() | id | bigint unsigned | NO | PRI | | auto_increment | | bigInteger('big_integer') | big_integer | bigint | NO | | | | | binary('binary') | binary | blob | NO | | | | | boolean('boolean') | boolean | tinyint(1) | NO | | | | | char('char', length: 100) | char | char(100) | NO | | | | | dateTimeTz('date_time_tz', precision: 0) | date_time_tz | datetime | NO | | | | | dateTime('date_time', precision: 0) | date_time | datetime | NO | | | | | date('date') | date | date | NO | | | | | decimal('decimal', total: 8, places: 2) | decimal | decimal(8,2) | NO | | | | | double('double') | double | double | NO | | | | | enum('enum', ['easy', 'hard']) | enum | enum('easy','hard') | NO | | | | | float('float', precision: 53) | float | double | NO | | | | | foreignId('foreign_id') | foreign_id | bigint unsigned | NO | | | | | foreignUlid('foreign_ulid') | foreign_ulid | char(26) | NO | | | | | foreignUuid('foreign_uuid') | foreign_uuid | char(36) | NO | | | | | geometry('geometry', subtype: 'point', srid: 0) | geometry | point | NO | | | | | integer('integer') | integer | int | NO | | | | | ipAddress('ip_address') | ip_address | varchar(45) | NO | | | | | json('json') | json | json | NO | | | | | jsonb('jsonb') | jsonb | json | NO | | | | | longText('long_text') | long_text | longtext | NO | | | | | macAddress('mac_address') | mac_address | varchar(17) | NO | | | | | mediumInteger('medium_integer') | medium_integer | mediumint | NO | | | | | mediumText('medium_text') | medium_text | mediumtext | NO | | | | | morphs('morph') | morph_type | varchar(255) | NO | MUL | | | | Ditto make 2 fields | morph_id | bigint unsigned | NO | | | | | nullableTimestamps(precision: 0) | created_at | timestamp | YES | | | | | Ditto make 2 fields | updated_at | timestamp | YES | | | | | nullableMorphs('nullable_morph') | nullable_morph_type | varchar(255) | YES | MUL | | | | Ditto make 2 fields | nullable_morph_id | bigint unsigned | YES | | | | | nullableUlidMorphs('nullable_ulid_morph') | nullable_ulid_morph_type | varchar(255) | YES | MUL | | | | Ditto make 2 fields | nullable_ulid_morph_id | char(26) | YES | | | | | nullableUuidMorphs('nullable_uuid_morph') | nullable_uuid_morph_type | varchar(255) | YES | MUL | | | | Ditto make 2 fields | nullable_uuid_morph_id | char(36) | YES | | | | | rememberToken() | remember_token | varchar(100) | YES | | | | | set('set', ['strawberry', 'vanilla']) | set | set('strawberry','vanilla') | NO | | | | | smallInteger('small_integer') | small_integer | smallint | NO | | | | | softDeletesTz('soft_delete_tz', precision: 0) | soft_delete_tz | timestamp | YES | | | | | softDeletes('soft_delete', precision: 0) | soft_delete | timestamp | YES | | | | | string('string', length: 100) | string | varchar(100) | NO | | | | | text('text') | text | text | NO | | | | | time('time_tz', 0) | time_tz | time | NO | | | | | time('time', 0) | time | time | NO | | | | | timestampTz('timestamp_tz', precision: 0) | timestamp_tz | timestamp | NO | | | | | timestamp('timestamp', precision: 0) | timestamp | timestamp | NO | | | | | tinyInteger('tiny_integer') | tiny_integer | tinyint | NO | | | | | tinyText('tiny_text') | tiny_text | tinytext | NO | | | | | unsignedBigInteger('unsigned_big_integer') | unsigned_big_integer | bigint unsigned | NO | | | | | unsignedInteger('unsigned_integer') | unsigned_integer | int unsigned | NO | | | | | unsignedMediumInteger('unsigned_medium_integer') | unsigned_medium_integer | mediumint unsigned | NO | | | | | unsignedSmallInteger('unsigned_small_integer') | unsigned_small_integer | smallint unsigned | NO | | | | | unsignedTinyInteger('unsigned_tiny_integer') | unsigned_tiny_integer | tinyint unsigned | NO | | | | | ulidMorphs('ulid_morph') | ulid_morph_type | varchar(255) | NO | MUL | | | | Ditto make 2 fields | ulid_morph_id | char(26) | NO | | | | | uuidMorphs('uuid_morph') | uuid_morph_type | varchar(255) | NO | MUL | | | | Ditto make 2 fields | uuid_morph_id | char(36) | NO | | | | | ulid('ulid') | ulid | char(26) | NO | | | | | uuid('uuid') | uuid | char(36) | NO | | | | | year('year') | year | year | NO | | | |
In order to ensure that the community is welcoming to all, please review and abide by the CODE OF CONDUCT.
The Xeed project is open-sourced software licensed under the MIT license.