gerfey / repository
Creating a Laravel Repositories
Installs: 3 610
Dependents: 2
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^7.1|^7.3|^7.4|^8.0|^9.0
- illuminate/database: ~7.0|^8.0|^9.0
- illuminate/pagination: ~7.0|^8.0|^9.0
- illuminate/support: ~7.0|^8.0|^9.0
README
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()); } }