schenke-io / laravel-relation-manager
Allow to plan, document and test model relations in Laravel
Requires
- php: ^8.2
- illuminate/contracts: ^v11.28.1
- nette/php-generator: ^v4.1.6
- spatie/laravel-data: ^3.11.2
- spatie/laravel-package-tools: ^1.16.0
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.14
- mockery/mockery: ^1.4.4
- nunomaduro/collision: ^8.5
- orchestra/testbench: ^9.5
- pestphp/pest: ^3.4
- spatie/laravel-ray: ^1.26
- dev-main
- v1.0.2
- v1.0.1
- v1.0.0
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.0
- v0.5.10
- v0.5.9
- v0.5.8
- v0.5.7
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.1
- v0.4.0
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- v0.0.3
- v0.0.1
- dev-dependabot/github_actions/dependabot/fetch-metadata-2.2.0
This package is auto-updated.
Last update: 2024-10-22 09:56:04 UTC
README
Developing complex Laravel applications with many models can be difficult. Laravel Relation Manager helps by bringing all your model relationships together. It creates tests to make sure they work and documents them for easy reference. This saves you time, improves code quality, and keeps your project organized.
Installation
You can install the package via composer:
composer require schenke-io/laravel-relation-manager
Install the config file of the package:
php artisan relation-manager:install
Usage
This package's core functionality is provided by two components:
- Configuration File: The
config/relation-manager.php
file allows you to define directories, files and namespaces of your project. - Custom Relation Manager Command: This command, which extends the
RelationManagerCommand
class, facilitates the configuration process.
In the command file:
- define models and their relations
- decide if you want to add reverse relations
- add BackedEnum classes used in $casts array of models as a special relation
- after the model-relation definition:
- write the test file
- run the test file (only)
- write text and graphical documentation
- echo tables
# app/Console/Commands/RelationWriteCommand use SchenkeIo\LaravelRelationManager\Console\RelationManagerCommand; class RelationWriteCommand extends RelationManagerCommand { public function handle(): void { $this->relationManager->model('Country') ->hasOne('Capital', true) ->hasMany('Region', true); $this->relationManager->model('Region') ->hasMany('City', true); // repeat this for any model // finally $this->relationManager ->writeMarkdown() ->showTables() ->writeTest(strict: true) ->runTest(); } }
This command is called by default with php artisan relation-manager:run
.
The following methods can be used inside handle()
:
Configuration
The configuration file config/relation-manager.php
has the following keys available.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.