UserRepository) and expand.illuminate/support (Laravel core) and doctrine/inflector (for pluralization).PublishedCriteria applied globally might break tests or production queries.PostRepository) for a high-churn model.// Before
$posts = Post::where('published', true)->with('author')->get();
// After
$posts = app(PostRepository::class)->resolve()->withAuthor()->published()->get();
SearchCriteria, PublishedCriteria).php artisan vendor:publish --provider="Czim\LaravelRepository\LaravelRepositoryServiceProvider".AppServiceProvider:
$this->app->bind(
\App\Repositories\PostRepository::class,
function () {
return new \Czim\LaravelRepository\Eloquent\EloquentRepository(
new \App\Models\Post(),
$this->app['db']
);
}
);
Czim\LaravelRepository\Eloquent\EloquentModel or keep existing models.$repository = Mockery::mock(PostRepository::class);
$repository->shouldReceive('findById')->andReturn($post);
->toSql() on repository queries to verify generated SQL.with() methods or global eager loading in repositories.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Repository instantiation fails | Breaks dependent services | Use try-catch in service constructors. |
| Criteria conflicts (e.g., global vs. temporary) | Silent query corruption | Log applied Criteria; use resetCriteria(). |
| N+1 queries in repositories | Performance degradation | Enforce eager loading in repository methods. |
| Package abandonment | Forking required | Maintain a custom fork or migrate to alternatives. |
| Overuse of repositories | "Anemic domain model" anti-pattern | Pair with Domain Services for rich logic. |
*Repository, *CriteriaHow can I help you explore Laravel packages today?