solophp/base-repository
Composer 安装命令:
composer require solophp/base-repository
包简介
Base repository pattern implementation for PHP applications
README 文档
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: operators, BETWEEN, OR/AND groups, and correlated EXISTS via relation dot-notation
- Named scopes: virtual criteria keys expanded into reusable criteria fragments (ideal for HTTP filters)
- Built-in aggregations (count, sum, avg, min, max)
- Translation via
withLocale()with optional fallback locale — auto LEFT JOIN, propagates into relations;seedTranslations()fills all locales on create (cross-platform) - Transaction helpers with row locking (
SELECT ... FOR UPDATE) and cross-process advisory locks (withLock()) for idempotency - Custom IDs (UUID, ULID, prefixed) via
$autoIncrement = false
Installation
composer require solophp/base-repository
Requirements: PHP 8.3+, Doctrine DBAL ^4.3
Database: any Doctrine DBAL platform. Locking is platform-specific:
lockForUpdate() — MySQL/MariaDB, PostgreSQL, Oracle; withLock() advisory locking —
MySQL/MariaDB (GET_LOCK) and PostgreSQL (pg_advisory_lock). Other platforms throw on these calls.
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
- Installation
- Quick Start
- Criteria Syntax
- Scopes
- Soft Delete
- Eager Loading
- Translations
- API Reference
License
MIT
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 15
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-07