quangbaort/make-repository is a Laravel package for base repository implementation for laravel.
It currently has 0 GitHub stars and 0 downloads on Packagist.
Install it with composer require quangbaort/make-repository.
Discover more Laravel packages by quangbaort
or browse all Laravel packages to compare alternatives.
Last updated
To get started with Base Repository, use Composer to add the package to your project's dependencies:
composer require quangbaort/make-repository
Laravel uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php
'providers' => [
// Other service providers...
quangbaort\RepositoryServiceProvider::class,
],
Next, you are ready to use repository. If you want create repository with Model corresponding(example:UserRepository), run commnand line
php artisan make:repostitory UserRepository -i
When run this commnand, Packeage automatic generate two file in forder Repository: UserRepository and UserRepositoryInterface. UserRepository extends AbstractRepository so you can use method in AbstractRepository
<?php
namespace App\Repositories;
use App\Models\User;
use quangbaort\Repository\AbstractRepository;
use App\Repositories\Contracts\UserRepositoryInterface;
class UserRepository extends AbstractRepository implements UserRepositoryInterface
{
protected $model;
/**
* UserRepository construct
*
* @param mixed $model
*
* @return void
*/
public function __construct(User $model)
{
parent::__construct($model);
}
}
Register in AppServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Repositories\UserRepository;
use App\Repositories\Contracts\UserRepositoryInterface;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->app->bind(UserRepositoryInterface::class, UserRepository::class);
}
}
In controller, You want find user by id use repository
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Repositories\Contracts\UserRepositoryInterface;
class UserController extends Controller
{
/**
* @var UserRepositoryInterface
*/
private $userRepository;
public function __construct(UserRepositoryInterface $userRepository )
{
$this->userRepository = $userRepository;
}
public function show($id)
{
$user = $this->userRepository->findById($id);
return response()->json($user);
}
}
All function in base repository
public function find(array $conditions = []);
public function findOne(array $conditions);
public function findById(int $id);
public function create(array $attributes);
public function update(Model $model, array $attributes = []);
public function save(Model $model);
public function delete(Model $model);
public function get($query);
public function destroy(array $ids);
public function findCount(array $conditions);
public function toBase($query);
public function updateMultiple(Builder $query, array $attributes = []);
public function updateOrCreate(array $attributes, array $values);
public function findAll();
public function findByIds(array $ids);
public function model();
public function makeModel();
public function resetModel();