Base repository implementation for laravel 4.x

Installs: 463

Dependents: 0

Suggesters: 0

Stars: 7

Watchers: 3

Forks: 1

Open Issues: 0

1.0.1 2014-04-12 18:07 UTC


Latest Stable Version Latest Unstable Version License Total Downloads


Add to your composer.json following lines

"require": {
    "ipunkt/laravel-repositories": "~1.0"


Repository Interfaces

Simply extend your interfaces by the provided interface Ipunkt\LaravelRepositories\Contracts\RepositoryInterface.

use Ipunkt\LaravelRepositories\Contracts\RepositoryInterface;

interface HolidayRepository extends RepositoryInterface
    public function allByUser(User $user);

Repository Classes

Simply extend your repository class by the provided Ipunkt\LaravelRepositories\EloquentRepository. It is an abstract class.

You need to have your own constructor which sets the internal property model to the appropriate model this repository will work on.

use Ipunkt\LaravelRepositories\EloquentRepository;

class EloquentHolidayRepository extends EloquentRepository implements HolidayRepository
     * @param Holiday $holiday eloquent model
    public function __construct(Holiday $holiday)
        $this->model = $holiday;

    /** implementing all methods in HolidayRepository */

Registering with an Service Provider

You should register all repository stuff with a service provider to use it for example in a controller.

class RepositoryServiceProvider extends ServiceProvider
    public function register()
        //  binding interface HolidayRepository to the concrete implementation of EloquentHolidayRepository
            function () {
                return new EloquentHolidayRepository(new Holiday());

class HolidayController extends Controller
    private $repo;

    public function __construct(HolidayRepository $holidayRepository)
        $this->repo = $holidayRepository;

API Documentation

Please look at the Ipunkt\LaravelRepositories\Contracts\RepositoryInterface for the current existing methods.