Laravel Repository Pattern Implementation

Laravel Repository Pattern Implementation

A simple Laravel 5 and Laravel 6 library that allows you to implement Repository Pattern with a single command

Originally published at https://github.com

Installation

composer require salmanzafar/laravel-repository-pattern 

Features

Will generate all the functionality for Repository pattern implementation

  • ServiceClass
  • Interface
  • ServiceProvider

Enable the package (Optional)

This package implements Laravel auto-discovery feature. After you install it the package provider and facade are added automatically for Laravel >= 5.5.

Configuration

Publish the configuration file

This step is required

php artisan vendor:publish --provider="Salman\RepositoryPattern\RepositoryPatterServiceProvider" 

Usage

After publishing the configuration file just run the below command

php artisan make:repo ModelName 

That's it, Now you've successfully implemented the repository pattern

Example

php artisan make:repo Car


CarRepositoryInterface.php

<?php

namespace App\Repositories;

interface CarRepositoryInterface { /** * Get's a record by it's ID * * @param int */ public function get($id);

/**
 * Get's all records.
 *
 * @return mixed
 */
public function all();

/**
 * Deletes a record.
 *
 * @param int
 */
public function delete($id);

/**
 * Updates a record.
 *
 * @param int
 * @param array
 */
public function update($id, array $data);

}

CarRepository.php

<?php

namespace App\Repositories;

use App\Car;

class CarRepository implements CarRepositoryInterface { /** * Get's a record by it's ID * * @param int * @return collection */ public function get($id) { return Car::find($id); }

/**
 * Get's all records.
 *
 * @return mixed
 */
public function all()
{
    return Car::all();
}

/**
 * Deletes a record.
 *
 * @param int
 */
public function delete($id)
{
    Car::destroy($id);
}

/**
 * Updates a post.
 *
 * @param int
 * @param array
 */
public function update($id, array $data)
{
    Car::find($id)-&gt;update($data);
}

}

Now go to

Repositories/RepositoryBackendServiceProvider.php and register the interface and class you have'just created

<?php

namespace App\Repositories;

use Illuminate\Support\ServiceProvider;

class RepositoryBackendServiceProvider extends ServiceProvider {

public function register()
{
    $this-&gt;app-&gt;bind(
        /*
        * Register your Repository classes and interface here
        **/

        'App\Repositories\CarRepositoryInterface',
        'App\Repositories\CarRepository'
    );
}

}


And now in your app/Http/Controllers/Carcontroller
<?php

namespace App\Http\Controllers;

use App\Car; use App\Repositories\CarRepositoryInterface;

class CarController extends Controller { protected $car;

public function __construct(CarRepositoryInterface $car)
{
    $this-&gt;$car = $car;
}

/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    $data = $this-&gt;car-&gt;all();

    return $data;
}

}

That's it you've successfully implemented Repository pattern in your code.

Thanks for reading

If you liked this post, share it with all of your programming buddies!

Follow me on Facebook | Twitter

Further reading

PHP with Laravel for beginners - Become a Master in Laravel

Projects in Laravel: Learn Laravel Building 10 Projects

Laravel for RESTful: Build Your RESTful API with Laravel

Fullstack Web Development With Laravel and Vue.js

Laravel 5.8 Tutorial for Beginners

Laravel 5.8 Ajax CRUD tutorial using Datatable JS

Laravel 5.8 Tutorial from Scratch for Beginners

Build RESTful API In Laravel 5.8 Example

Login with Google in Laravel 5.8 App using Socialite Package

Upgrading Laravel To 6.0 From 5.8

Laravel 6 Release New Features and Upgrade


laravel php web-development

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

PHP Web Application Development Company

As a top **PHP Web Application Development Company in USA**[https://www.dataeximit.com/php-development-services/](https://www.dataeximit.com/php-development-services/ "https://www.dataeximit.com/php-development-services/"), we at Data EximIT have...

PHP Website Development

Skenix Infotech is a leading PHP Web Development Company that helps companies get results with industry best practices. Get affordable PHP Development Services.

Laravel Development Company

Skenix Infotech is a top Laravel Website Development Company with Expert Laravel Developers that provides robust Laravel Development Services at fair costs.

Hire Dedicated PHP Developer

Looking to hire affordable yet experienced PHP developers? **[Hire Dedicated PHP Developer](https://hourlydeveloper.io/hire-dedicated-php-developer/ "Hire Dedicated PHP Developer")**, who can convert your idea to reality, within the stipulated...

Hire PHP Developer

Looking to develop a PHP based website from scratch or revamp your existing website? **[HourlyDeveloper.io](https://hourlydeveloper.io/ "HourlyDeveloper.io")** has always been an industry leader for companies and business owners looking to hire...