Originally published at https://github.com
composer require salmanzafar/laravel-repository-pattern
Will generate all the functionality for Repository pattern implementation
This package implements Laravel auto-discovery feature. After you install it the package provider and facade are added automatically for Laravel >= 5.5.
Publish the configuration file
This step is required
php artisan vendor:publish --provider="Salman\RepositoryPattern\RepositoryPatterServiceProvider"
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
php artisan make:repo Car
<?phpnamespace 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);
}
<?phpnamespace 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)->update($data); }
}
Repositories/RepositoryBackendServiceProvider.php
and register the interface and class you have’just created
<?phpnamespace App\Repositories;
use Illuminate\Support\ServiceProvider;
class RepositoryBackendServiceProvider extends ServiceProvider
{public function register() { $this->app->bind( /* * Register your Repository classes and interface here **/ 'App\Repositories\CarRepositoryInterface', 'App\Repositories\CarRepository' ); }
}
app/Http/Controllers/Carcontroller
<?phpnamespace App\Http\Controllers;
use App\Car;
use App\Repositories\CarRepositoryInterface;class CarController extends Controller
{
protected $car;public function __construct(CarRepositoryInterface $car) { $this->$car = $car; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $data = $this->car->all(); return $data; }
}
Thanks for reading ❤
If you liked this post, share it with all of your programming buddies!
Follow me on Facebook | Twitter
☞ 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