This package offer the possibility to generate repository based on the give model.
Via Composer
$ composer require vtalbot/repository-generator --dev
Edit your AppServiceProvider
to add the following to the register
method:
if ($this->app->environment() == 'local') {
$this->app->register(\VTalbot\RepositoryGenerator\RepositoryGeneratorServiceProvider::class);
}
Then execute the command:
$ php artisan vendor:publish --provider="VTalbot\RepositoryGenerator\RepositoryGeneratorServiceProvider" --tag=config
Edit config/repository.php
to your needs.
To create a simple repository:
$ php artisan make:repository User
Repository created:
> App\Repositories\UserRepository
To have a contract with the repository:
$ php artisan make:repository User --contract
Repository created:
> App\Repositories\DbUserRepository
> App\Repositories\Contracts\UserRepository
By default, the repository will have the methods: all
, find
, create
, update
and delete
. You can
Change the methods that will be added by using the options --only=all,find
or --except=all,find
. If you
want a plain repository, use the option --plain
.
A suffix is by default added to the repository, based on the config file. To change this value, you can provide
the option --suffix=Repo
. There is an option for the prefix when using the option --contract
, by providing
the option --prefix=Ab
, which by default is Db
.
If you want to change the name of the repository, you can use the option --name=Users
to replace the model
name and suffix.
$ php artisan make:repository User --name=Users --contract
Repository created:
> App\Repositories\DbUsers
> App\Repositories\Contracts\Users
If you want to automatically load the generated repositories, execute the following command:
$ php artisan make:repository:service
It accept a name
argument to define the name you want and a --namespace
option if your providers aren't inside
the default app/Providers
.
- Fix newly created classes code style.
- Add support for Laravel 5.2.
- Fix class reflection test order.
- Add repository service provider to load generated repositories with contract.