eg-mohamed/referenceable
Laravel package that adds reference numbers to Eloquent models with configurable formats. Supports random, sequential, and template-based generation (e.g., year/month/seq/random), collision handling, validation, and tenant-aware sequences. Includes install command, config publishing, and Laravel 10–...
company_id isolation).generateReference() lifecycle (e.g., trigger analytics on reference creation).LogEntry) to validate collision handling.Order, Invoice) with sequential templates (e.g., {YEAR}{SEQ}).reference) and indexes (adds ~50KB per 100K records).| Risk Area | Mitigation Strategy |
|---|---|
| Collision Handling | Test retry strategy under high concurrency (e.g., 1000/s). Monitor max_retries. |
| Performance | Benchmark batch operations (e.g., generateBatch()) vs. manual loops. |
| Backward Compatibility | Validate v1.x → v2.x migration scripts for existing references. |
| Template Complexity | Document placeholder conflicts (e.g., {SEQ} vs. {MODEL}) in team guidelines. |
| Multi-Tenancy | Stress-test tenant isolation with 100+ tenants and concurrent writes. |
INV-2024-001) or updatable?INV-2024-{SEQ} per region)?order_id → reference)?regenerateReference())?reference column to target models via migration.php artisan vendor:publish --tag=referenceable-config.referenceable.php).LogEntry).Order, Invoice) with sequential templates.reference (deprecate legacy IDs).toArray().reference into subscriptions.HasReference trait for unit tests.fake() for deterministic reference generation.| Step | Priority | Effort | Dependencies |
|---|---|---|---|
| Add DB column | High | Low | Migration scripts |
| Configure strategies | Medium | Medium | Business rules review |
| Update APIs | High | High | API contract freeze |
| Batch generation | Low | Medium | php artisan referenceable:generate |
| Monitor collisions | Critical | Low | Alerting setup |
config/referenceable.php to avoid per-model inconsistencies.v2.x → v3.0) in staging for breaking changes (e.g., template syntax).deprecated() for legacy reference fields.max_retries tuning for high-volume models.referenceUniquenessScope behavior in docs.DB::enableQueryLog()) for sequential strategy issues.php artisan referenceable:stats to audit reference usage.batch_size (default: 100) for memory usage.referenceValidation patterns in Redis.reference (e.g., WHERE reference LIKE 'ORD-%').referenceable:stats queries.| Scenario | Impact | Mitigation |
|---|---|---|
| DB Lock Contention | Sequential generation fails | Use use_transactions: false |
| Collision Exhaustion | max_retries exceeded |
Fallback to append strategy |
| Config Cache Stale | Model configs not loaded | Invalidate cache on config changes |
| Template Syntax Errors | Reference generation crashes | Validate templates via preg_match |
| Multi-Tenant Isolation | Cross-tenant reference leaks | Audit referenceTenantColumn usage |
{PREFIX}{YEAR}{SEQ}).reset_frequency: 'daily').How can I help you explore Laravel packages today?