packagedby / model-repositories
This package is abandoned and no longer maintained.
The author suggests using the nathandunn/model-repositories package instead.
There is no license information available for the latest version (2.0.1) of this package.
Easily create a repository using a Laravel Model
2.0.1
2022-02-08 21:25 UTC
Requires
- php: ^8.0
- illuminate/database: ^9.0
- illuminate/support: ^9.0
This package is auto-updated.
Last update: 2023-02-18 22:07:38 UTC
README
Wraps around Eloquent models allowing them to be used as repositories.
Why?
Because getting a collection from a model "object" isn't really a models role, and is deceptive when injecting a model and using it in another context
Inspired by Jack Wagstaffe
Install
You can install the package with Composer by running the following command:
composer require packagedby/model-repositories
Usage instructions
Below is an example of an example repository for a Record model. This extends the base Repository class and adds a custom forUser method.
<?php namespace App\Records; use App\Users\User; use Illuminate\Database\Eloquent\Builder; use PackagedBy\Repositories\Repository; class RecordRepository extends Repository { /** * @param Record $record */ public function __construct(Record $record) { parent::__construct($record); } public function forUser(User $user): Builder { return $this->model->where('user_id', '=', $uuid); } }
You can inject the RecordRepository in a controller:
<?php namespace App\Http\Controllers; use App\Http\Resources\RecordResource; use App\Records\RecordRepository; use Illuminate\Http\Request; class RecordsController extends Controller { protected RecordRepository $recordRepository; public function __construct(RecordRepository $recordRepository) { $this->recordRepository = $recordRepository; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request) { $user = $request->user(); $records = $this->recordRepository->forUser($user)->get(); return RecordResource::collection($records); } }