solophp / base-repository
Base repository pattern implementation for PHP applications
Installs: 48
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/solophp/base-repository
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
- 🆔 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
License
MIT