Download the PHP package dannyweeks/laravel-base-repository without Composer
On this page you can find all versions of the php package dannyweeks/laravel-base-repository. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download dannyweeks/laravel-base-repository
More information about dannyweeks/laravel-base-repository
Files in dannyweeks/laravel-base-repository
Package laravel-base-repository
Short Description An abstract repository class for your Eloquent repositories that requires minimal config to get started.
License MIT
Informations about the package laravel-base-repository
Laravel Base Repository
An abstract repository class for your Eloquent repositories that requires minimal config to get started.
Features
- 2 minute setup.
- 10 useful methods out of the box such as
getById
. - Flexible relationship support including eager loading..
- Optional easy to use Caching.
- Optional 404 exceptions when items aren't found.
Quick Start
Install via Composer.
composer require dannyweeks/laravel-base-repository
Extend your repositories with Weeks\Laravel\Repositories\BaseEloquentRepository
.
Add the $model
property to your repository so the base repository knows what model to use.
That's it! Let's test it out.
Usage
Your repositories must extend the BaseEloquentRepository
class and have the properties:
protected $model
: the name of your model (including it's namespace)protected $relationships
: (Optional) an array of the methods available to be included when retrieving items.
Be sure to check out the example.
Available Methods
See the repository interface class for the full API.
Relationships
Relationships are defined in the repository but are not eagerly loaded automatically.
Relationships can be loaded in the following three ways using the with()
method:
$postRepository->with('all')->getAll();
retrieve all relationships defined in the repository class$postRepository->with(['comments', 'author'])->getAll();
retrieve relationships using an array$postRepository->with('comments')->getAll();
retrieve relationship using a string
An Example
This example shows how your model, repository and controller could be set up.
app\Models\Post.php
app\Repositories\PostRepository.php
app\Http\Controllers\PostController.php
HTTP Exceptions
To enable http exceptions (like Eloquent's findOrFail method) on a repository just have it use \Weeks\Laravel\Repositories\Traits\ThrowsHttpExceptions;
.
If the below methods return null they will throw a 404 error instead of returning null.
An example using the ThrowsHttpExceptions trait.
You can temporarily disable HTTP exceptions by chaining disableHttpExceptions()
before performing a query. For example:
Caching
To enable caching on a repository just have it use \Weeks\Laravel\Repositories\Traits\CacheResults;
.
By doing this all the repository 'read' methods cache their results using Laravel's caching system.
An example using the CacheResults trait.
You can force the result of a request not to be cached by adding the method name to the $nonCacheableMethods
property of your repository. See example above.
By default the ttl of a cache item is 60 minutes. This can be overwritten by updating the $cacheTtl
property of your repository. See example above.
Caching can be disabled programatically by calling disabledCaching()
on your repository. This method returns the repository to enable method chaining e.g. $repo->disableCaching()->getAll();
.