Download the PHP package bytetcore/serpo without Composer
On this page you can find all versions of the php package bytetcore/serpo. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bytetcore/serpo
More information about bytetcore/serpo
Files in bytetcore/serpo
Package serpo
Short Description Laravel Repository Pattern - Elegant data layer abstraction with criteria-based filtering for Eloquent models.
License Apache-2.0
Homepage https://github.com/ByteTCore/serpo
Informations about the package serpo
Serpo — Laravel Repository Pattern
Elegant data layer abstraction for Laravel using the Repository Pattern with powerful criteria-based filtering. Keep your controllers clean and your data logic reusable.
Features
- 🏗️ Repository Pattern — Abstract Eloquent models behind clean interfaces
- 🔍 Criteria System — Composable, reusable query filters (where, like, date, JSON, null, in)
- ⚡ Zero Boilerplate — Artisan generators for repositories, services, and criteria
- 🔗 Fluent Chaining — Chain any Eloquent Builder method directly on repositories
- 🔄 Auto Query Reset — Query state resets after execution, preventing stale queries
- 📦 Laravel Auto-Discovery — Install and go, no manual provider registration
Requirements
- PHP 8.1+
- Laravel 9.0+
Installation
Publish the configuration:
Quick Start
1. Generate a Repository
2. Generate a Service
3. Generate a Custom Criteria
Usage
Basic Repository
Query Methods
Eloquent Builder Chaining
All Eloquent Builder methods are available directly on the repository:
Criteria-Based Filtering
Define reusable filters in your repository using the fluent Condition API:
Apply filters from request data:
Controlling Filter Application Order
By default, filters are applied in the order declared in conditions(). Override filterOrder() to change the order without reordering the conditions() map:
Available Criteria
| Factory | Criteria | SQL |
|---|---|---|
Condition::where() |
WhereCriteria | WHERE col op val |
Condition::like() |
LikeCriteria | WHERE col LIKE pattern |
Condition::date() |
DateCriteria | WHERE DATE(col) op val |
Condition::between() |
BetweenCriteria | WHERE col BETWEEN ? AND ? |
Condition::notBetween() |
NotBetweenCriteria | WHERE col NOT BETWEEN ? AND ? |
Condition::year() |
YearCriteria | WHERE YEAR(col) op val |
Condition::month() |
MonthCriteria | WHERE MONTH(col) op val |
Condition::whereIn() |
InCriteria | WHERE col IN (...) |
Condition::whereNotIn() |
NotInCriteria | WHERE col NOT IN (...) |
Condition::whereNull() |
NullCriteria | WHERE col IS NULL |
Condition::whereNotNull() |
NotNullCriteria | WHERE col IS NOT NULL |
Condition::jsonContains() |
JsonContainsCriteria | whereJsonContains |
Condition::jsonNotContains() |
JsonNotContainsCriteria | whereJsonDoesntContain |
Condition::orderBy() |
OrderByCriteria | ORDER BY col asc/desc |
Condition::andGroup(...) |
NestedCriteria | Nested AND group |
Condition::orGroup(...) |
NestedCriteria | Nested OR group |
Condition::custom() |
Any custom class | — |
Fluent modifiers
| Modifier | Applies to | Example |
|---|---|---|
.columns(...) |
All | Condition::where('name', 'email') |
.and() / .or() |
All | Condition::like('name', 'email')->or() |
.gt() / .gte() / .lt() / .lte() |
where, date, year, month | Condition::where('age')->gte() |
.not() |
where | Condition::where('status')->not() |
.contains() / .startsWith() / .endsWith() |
like | Condition::like('name')->startsWith() |
.asc() / .desc() |
orderBy | Condition::orderBy('created_at')->desc() |
Detailed Criteria Walkthrough
Database Comparisons
Search & Text (LikeCriteria)
Ranges (BetweenCriteria)
Working with Dates
Sets & Arrays
Nullity Checks
JSON Columns
Dynamic Sorting
Nested Groups
Combine different criteria types in a single parenthesized group:
Custom Criteria
Create your own criteria by extending BaseCriteria, then reference it with Condition::custom():
Auto-Reset Behavior
By default, the query builder resets after each execution to prevent stale state:
Disable auto-reset when you need to reuse the query:
Configuration
Testing
Changelog
See CHANGELOG.md for release history.
Contributing
See CONTRIBUTING.md for guidelines.
License
Licensed under the Apache License 2.0.
All versions of serpo with dependencies
illuminate/support Version ^9.0|^10.0|^11.0|^12.0|^13.0
illuminate/database Version ^9.0|^10.0|^11.0|^12.0|^13.0