Skip to content

Instantly share code, notes, and snippets.

@fxcosta
Created September 15, 2015 01:45
Show Gist options
  • Save fxcosta/47bce19f0e8dd0960d26 to your computer and use it in GitHub Desktop.
Save fxcosta/47bce19f0e8dd0960d26 to your computer and use it in GitHub Desktop.
Repository Pattern in Laravel 5.1
<?php
namespace App\Http\Controllers;
use App\Repositories\MovieRepositoryInterface;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MovieController extends Controller
{
protected $movieRepository;
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(MovieRepositoryInterface $movieRepository)
{
$this->movieRepository = $movieRepository;
$this->movieRepository->getMoviesByName("Ação");
}
}
<?php
namespace App\Entities;
use Illuminate\Database\Eloquent\Model;
use Prettus\Repository\Contracts\Transformable;
use Prettus\Repository\Traits\TransformableTrait;
class Movie extends Model implements Transformable
{
use TransformableTrait;
protected $fillable = [];
}
<?php
namespace App\Repositories;
use Prettus\Repository\Eloquent\BaseRepository;
use Prettus\Repository\Criteria\RequestCriteria;
use App\Entities\Movie;
/**
* Class MovieRepositoryEloquent
* @package namespace App\Repositories;
*/
class MovieRepositoryEloquent extends BaseRepository implements MovieRepository
{
/**
* Specify Model class name
*
* @return string
*/
public function model()
{
return Movie::class;
}
/**
* Boot up the repository, pushing criteria
*/
public function boot()
{
$this->pushCriteria( app(RequestCriteria::class) );
}
public function getMoviesByName($name)
{
echo $name;
}
}
<?php
namespace App\Repositories;
use Prettus\Repository\Contracts\RepositoryInterface;
/**
* Interface MovieRepository
* @package namespace App\Repositories;
*/
interface MovieRepository extends RepositoryInterface
{
public function getMoviesByName($name);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment