cable8mm / xeed
The Xeed is to generate new model, seed, database seed, factory and migration files for Laravel based on data from the existing database table.
Installs: 640
Dependents: 0
Suggesters: 0
Security: 0
Stars: 88
Watchers: 1
Forks: 8
Open Issues: 0
Type:project
Requires
- php: ^8.0.2
- cable8mm/array-flatten: ^1.0
- doctrine/inflector: ^2.0
- league/flysystem: ^3.0
- symfony/console: ^6.0|^7.0
- vlucas/phpdotenv: ^5.0
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0|^7.0|^8.0
- orchestra/testbench: ^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.0|^10.0|^11.0
Suggests
- php: `symfony/console` need `^8.0.2` over.
- cable8mm/array-flatten: To enable more efficient database schema mapping.
- doctrine/inflector: To get a Laravel Model name from a table name.
- symfony/console: Console framework to be used.
- vlucas/phpdotenv: To read `.env` configuration.
README
The Xeed is to generate new model, seed, database seed, factory and migration files for Laravel based on data from the existing database table.
Tip
It can function as both php artisan xeed:*
commands for Laravel and bin/console *
commands for Standalone, providing 100% identical functionality. Therefore, you can use it within your own Laravel project or as a standalone application.
We have provided the API Documentation on the web. For more information, please visit https://www.palgle.com/xeed/ β€οΈ
Features
- Database testing is supported
- Generate models for Laravel
- Generate seed files for Laravel
- Generate database seed files for Laravel
- Generate factories for Laravel
- Generate migrations for Laravel
- Generate belongsTo and hasMany relationships functions for Laravel
- Laravel multi & reserved columns supported
- Laravel integration
- MySQL, SQLite and PostgreSQL supported
Support & Tested
Caution
PostgreSQL support is in beta. If you encounter any issues, please report them via GitHub issues.
Preview
Laravel:
Standalone:
Installation
composer require cable8mm/xeed --dev
# For Laravel
composer create-project cable8mm/xeed
# For Standalone
Important
Edit the .env
file to configure your own database. You can manually copy .env.example
to .env
whenever you need to.
Usage
Generate Models
php artisan xeed:models # Generate all models from database in `app/Models` folder php artisan xeed:models -f -t xeeds # Force to generate a model from `xeeds` table in `app/Models` folder
bin/console models # Generate all models from database in `dist/app/Models` folder bin/console models -f -t xeeds # Force to generate a model from `xeeds` table in `app/Models` folder
Generate Seeders
php artisan xeed:seeders # Generate all seeds from database in `database/seeders` folder php artisan xeed:seeders -f -t xeeds # Force to generate a seeder from `xeeds` table in `database/seeders` folder
bin/console seeders # Generate all seeds from database in `dist/database/seeders` folder bin/console seeders -f -t xeeds # Force to generate a seeder from `xeeds` table in `dist/database/seeders` folder
Generate Faker Seeders
The Faker seeders are utilized without the factory()
method to generate seeds. This command was created to address the issue #61, providing insight into its purpose.
php artisan xeed:faker-seeders # Generate all seeds from database in `database/seeders` folder php artisan xeed:faker-seeders -f -t xeeds # Force to generate a seeder from `xeeds` table in `database/seeders` folder
bin/console faker-seeders # Generate all seeds from database in `dist/database/seeders` folder bin/console faker-seeders -f -t xeeds # Force to generate a seeder from `xeeds` table in `dist/database/seeders` folder
Generate DatabaseSeeder
php artisan xeed:database
# Generate a database seed from database in `database/seeders` folder
bin/console database
# Generate a database seed from database in `dist/database/seeders` folder
Generate Factories
php artisan xeed:factories # Generate all factories from database in `database/factories' folder php artisan xeed:factories -f -t xeeds # Force to generate a factory from `xeeds` table in `database/factories' folder
bin/console factories # Generate all factories from database in `dist/database/factories' folder bin/console factories -f -t xeeds # Force to generate a factory from `xeeds` table in `database/factories' folder
Generate Migrations
php artisan xeed:migrations # Generate all migrations from database in `database/migrations' folder php artisan xeed:migrations -f -t xeeds # Force to generate a migration from `xeeds` table in `database/migrations' folder
bin/console migrations # Generate all migrations from database in `dist/database/migrations' folder bin/console migrations -f -t xeeds # Force to generate a migration from `xeeds` table in `database/migrations' folder
The generated files are stored in the same folder as your Laravel project. Please check the dist
folder.
Generate Relations
This command can only be used in Models where use HasFactory;
exists, all relations will be placed after it.
php artisan xeed:relations # Add the relation function to all models from database in `app/Models` folder php artisan xeed:relations -m # Runs xeed:models before running xeed:relations. Add -f to force to generate
bin/console relations # Add the relation function to all models from database in `dist/app/Models` folder bin/console relations -m # Runs xeed:models before running xeed:relations. Add -f to force to generate
The generated relations are named using laravels convention. Some names may be duplicated
Helpful commands
If you are going to test this package yourself, then you would use the following commands to clean up generated files.
php artisan xeed:clean # Clean generated files, seeders, models, factories and migration files. #=> Refer the below Please select directory for you to want to clean. [0] seeder [1] model [2] factory [3] migration [4] all [5] exit
bin/console clean # Clean generated files, seeders, models, factories and migration files. #=> Refer the below Please select directory for you to want to clean. [0] seeder [1] model [2] factory [3] migration [4] all [5] exit
Formatting
composer lint # Modify all files to comply with the PSR-12. composer inspect # Inspect all files to ensure compliance with PSR-12.
Testing
It uses the built-in SQLite database, not your own database. It will never cause harm to your data. You don't need to worry about that.
composer testpack
# All tests with Laravel artisan commands
composer test # All tests without Laravel artisan commands
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
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.
touch database/database.sqlite
# Create a new empty file for SQLite database
And then,
composer test # Run tests
Database seeds
For migrations and factories, when you need to execute tests for all database field types, utilize the following command.
php artisan xeed # Import an 'xeeds' Table into the Database php artisan xeed drop # Drop the 'xeeds' Table from the Database
bin/console xeed # Import an 'xeeds' Table into the Database bin/console xeed drop # Drop the 'xeeds' Table from the Database
Utilize migration files for all database field types by referring to the following location database/*.sql
these files are saved in the specified folder.
Use testorchestral/testbench
You 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.
Credits
License
The Xeed project is open-sourced software licensed under the MIT license.