Laravel Repositories - это пакет для Laravel 7+, который используется для абстрагирования слоя базы данных.
Используем artisan команду
composer require gerfey/repository
Используем artisan команду
php artisan make:repository Test
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
}
<?php namespace App\Repository;
use Gerfey\Repository\Repository;
use App\Test;
class TestRepository extends Repository {
protected $entity = Test::class;
}
Используем artisan команду
php artisan make:repository:criteria TestActive
<?php
namespace App\Criteria;
use Gerfey\Repository\Contracts\Criteria\CriteriaInterface;
use Illuminate\Database\Eloquent\Builder;
class TestActiveCriteria implements CriteriaInterface
{
public function apply($model): Builder
{
return $model->limit(10);
}
}
теперь в любом Controller вызываем TestRepository и добавляем нашу критерию TestActiveCriteria.
<?php namespace App\Http\Controllers;
use App\Repository\TestRepository;
use App\Criteria\TestActiveCriteria;
class TestController extends Controller {
public function index(TestRepository $testRepository) {
$testRepository->addCriteria(new TestActiveCriteria());
$testRepository->addCriteria(TestActiveCriteria::class);
return \Response::json($testRepository->all());
}
}