All the basic methods to any Laravel project with Repository pattern
josrom/eloquent-crud-repository is a Laravel package for all the basic methods to any laravel project with repository pattern.
It currently has 0 GitHub stars and 2.365 downloads on Packagist (latest version 13.0.0).
Install it with composer require josrom/eloquent-crud-repository.
Discover more Laravel packages by josrom
or browse all Laravel packages to compare alternatives.
Last updated
EloquentCrudRepository provides a well tested and complete base to create more model repositories using the repository pattern with Eloquent as ORM.
|Name|Parameters|Return| |----|----------|------| |all|array $with = []|\Illuminate\Database\Eloquent\Collection| |allWithTrashed|array $with = []|\Illuminate\Database\Eloquent\Collection| |allTrashed|array $with = []|\Illuminate\Database\Eloquent\Collection| |find|int $id, array $with = []|\Illuminate\Database\Eloquent\Model| |findWithTrashed|int $id, array $with = []|\Illuminate\Database\Eloquent\Model| |findTrashed|int $id, array $with = []|\Illuminate\Database\Eloquent\Model| |findBy|string $field, mixed $value, string $comparison = '=', bool $strict = true, array $with = []|\Illuminate\Database\Eloquent\Model| |findByWithTrashed|string $field, mixed $value, string $comparison = '=', bool $strict = true, array $with = []|\Illuminate\Database\Eloquent\Model| |findByTrashed|string $field, mixed $value, string $comparison = '=', bool $strict = true, array $with = []|\Illuminate\Database\Eloquent\Model| |newModel|array $params = []|\Illuminate\Database\Eloquent\Model| |create|array $params|\Illuminate\Database\Eloquent\Model| |update|int $id, array $params|\Illuminate\Database\Eloquent\Model| |delete|int $id|bool| |forceDelete|int $id|bool| |restore|int $id|bool| |paginate|\Illuminate\Database\Eloquent\Builder $query, int $page = 0, int $limit = 15|object| |paginateCollection|\Illuminate\Database\Eloquent\Collection $collection, int $page = 0, int $limit = 15|object| |pagination|int $page = 0, int $limit = 15|object| |paginationWithTrashed|int $page = 0, int $limit = 15|object| |paginationOnlyTrashed|int $page = 0, int $limit = 15|object|
|Name|Parameters|Return| |----|----------|------| |checkCanShow|?\Illuminate\Database\Eloquent\Model $model|void| |checkCanCreate|array $params|void| |checkCanUpdate|\Illuminate\Database\Eloquent\Model $model, array $newValues|void| |checkCanDelete|\Illuminate\Database\Eloquent\Model $model|void| |checkCanRestore|\Illuminate\Database\Eloquent\Model $model|void| |canShow|?\Illuminate\Database\Eloquent\Model $model|bool| |canCreate|array $params|bool| |canUpdate|\Illuminate\Database\Eloquent\Model $model, array $newValues|bool| |canDelete|\Illuminate\Database\Eloquent\Model $model|bool| |canRestore|\Illuminate\Database\Eloquent\Model $model|bool| |hasSoftDeletes| |bool|
Extend CrudRepository and inject your Eloquent model. Annotate with @extends CrudRepository<YourModel> so that IDEs and static analysis tools (PHPStan, Psalm) can infer the concrete model type on every return value:
use Eloquent\Crud\Repository\Eloquent\CrudRepository;
/**
* @extends CrudRepository<User>
*/
class UserRepository extends CrudRepository
{
public function __construct()
{
parent::__construct(new User());
}
}
With that annotation in place, find(), create(), update(), all(), etc. all resolve to User (or Collection<int, User>) in your IDE instead of the base Model.
Override any can* method to restrict access. The corresponding checkCan* guard calls it and throws AccessDeniedException (HTTP 403) on denial:
/**
* @extends CrudRepository<Post>
*/
class PostRepository extends CrudRepository
{
public function __construct()
{
parent::__construct(new Post());
}
protected function canUpdate(Model $model, array $newValues): bool
{
return Auth::id() === $model->user_id;
}
protected function canDelete(Model $model): bool
{
return Auth::user()->isAdmin();
}
}
If your model uses the SoftDeletes trait, the WithTrashed and OnlyTrashed variants are automatically available:
/**
* @extends CrudRepository<Post>
*/
class PostRepository extends CrudRepository
{
public function __construct()
{
parent::__construct(new Post()); // Post uses SoftDeletes
}
}
$repo->allWithTrashed(); // active + soft-deleted
$repo->allTrashed(); // only soft-deleted
$repo->findWithTrashed($id);
$repo->findTrashed($id);
$repo->forceDelete($id);
$repo->restore($id);
To get the last version of EloquentCrudRepository, simply require the project using Composer:
composer require josrom/eloquent-crud-repository
Instead, you may of course manually update your require block and run composer update if you so choose:
{
"require": {
"josrom/eloquent-crud-repository": "^13.0"
}
}
EloquentCrudRepository is open-sourced software licensed under the MIT license