solophp / base-repository
Base repository pattern implementation for PHP applications
v2.3.0
2026-03-07 08:01 UTC
Requires
- php: ^8.3
- doctrine/dbal: ^4.3
Requires (Dev)
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^12.0
- squizlabs/php_codesniffer: ^3.13
README
Lightweight PHP repository pattern with built-in soft delete, eager loading, and rich criteria syntax.
Features
- Soft delete with restore/force delete
- Eager loading (BelongsTo, HasOne, HasMany, BelongsToMany)
- Rich criteria syntax with operators and relation filters
- Built-in aggregations (count, sum, avg, min, max)
- Transaction helpers with row locking (SELECT ... FOR UPDATE)
- Auto-detect custom IDs (UUID, prefixed)
Installation
composer require solophp/base-repository
Requirements: PHP 8.3+, Doctrine DBAL ^4.3
Quick Example
class UserRepository extends BaseRepository { protected ?string $deletedAtColumn = 'deleted_at'; public function __construct(Connection $connection) { parent::__construct($connection, User::class, 'users'); } } // Usage $users = $repo->findBy(['status' => 'active'], ['created_at' => 'DESC'], 20, 1); $repo->delete($id); // Soft delete $repo->restore($id); // Restore
Documentation
📖 Full Documentation
License
MIT