antoiner/laravel-repositories-command

There is no license information available for the latest version (dev-master) of this package.

Command for Laravel to generate repositories of each model

dev-master 2021-03-01 16:49 UTC

This package is auto-updated.

Last update: 2024-05-29 04:55:54 UTC


README

Artisan command to create Repository with RepositoryInterface for each Model and use it in the application with the dependency injection.

Installation

Require package with composer :

composer require antoiner/laravel-repositories-command --dev

Command

Once installed run the following command to create RepositoryInterface and Repository for each Model of your application :

php artisan make:repositories

This command also create RepositoryServiceProvider to bind all RepositoryInterface with its correspondent Repository .

After executing the command you just have to add this line in the config/app.php to register the service provider :

App\Providers\RepositoryServiceProvider::class,

Usage

Now you can use Repository in your application like this :

//routes/web.php

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', "HomeController@index");
//app/Http/Controllers/HomeController.php

<?php

namespace App\Http\Controllers;

use App\Repositories\UserRepositoryInterface;

class HomeController extends Controller
{
    private $userRepository;

    public function __construct(UserRepositoryInterface $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function index() {
        dd($this->userRepository->all());
    }
}

Annotations

You can disable the repository generation for a Model by adding the annotation @Repository(enable = false) in the class documentation.

//Blog.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

/**
 * @Repository(enable = false)
 */
class Blog extends Model
{
    //
}