Search by

microweber-packages / microweber-repository

boksiora

Reusable Laravel repository pattern package with caching, query filtering and model observers

Package info

github.com/microweber-packages/microweber-repository

pkg:composer/microweber-packages/microweber-repository

Statistics

Installs: 31

Dependents: 4

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-03 16:18 UTC

This package is auto-updated.

Last update: 2026-11-03 17:07:31 UTC


README

A reusable Laravel package providing the repository pattern with built-in caching, query filtering, and model observers.

Installation

composer require microweber-packages/microweber-repository

The service provider is auto-discovered by Laravel.

Usage

AbstractRepository

Extend AbstractRepository and set the $model property:

use MicroweberPackages\Repository\Repositories\AbstractRepository;

class PostRepository extends AbstractRepository
{
    public $model = Post::class;
}

CachingModelRepository

For simple cache-wrapped model queries:

use MicroweberPackages\Repository\Repositories\CachingModelRepository;

class PostRepository extends CachingModelRepository
{
    protected string $modelClass = Post::class;

    public function getPublished(): array
    {
        return $this->cached(__FUNCTION__, func_get_args(), function () {
            return Post::where('status', 'published')->get()->toArray();
        });
    }
}

FilterableByParams Trait

Add filtering capabilities to any Eloquent model:

use MicroweberPackages\Repository\Traits\FilterableByParams;

class Post extends Model
{
    use FilterableByParams;
}

// Then use it:
$results = Post::filterByParams([
    'limit' => 10,
    'order_by' => 'created_at desc',
    'status' => 'active',
])->get();

Testing

composer test

License

MIT