webpatser/uuid
Pure PHP UUID generator/validator (RFC 4122 + RFC 9562). Create UUID v1, v3, v4, v5, v6, v7, v8 and nil UUIDs; import, validate, compare, and inspect string/hex/bytes/URN, version, variant, and time fields.
uuid cast).incrementing IDs with uuid() casting (e.g., $table->uuid('id')).JsonSerializable or Arrayable traits.Illuminate\Validation\Rule::uuid() or custom rules (e.g., Uuid::validate()).UUIDv1 with UUIDv7 for database tables, leveraging time-ordering for indexing.UUIDv4 for auth tokens and sensitive identifiers.ramsey/uuid as a fallback or upgrade path.UUIDv7::time property for sorting.Uuid::isNilUuid()).ramsey/uuid for testing.ramsey/uuid justify the PHP 8.5 constraint?ramsey/uuid)?incrementing IDs with uuid() casting (e.g., $table->uuid('id')->index()).Uuid::validate() or Laravel’s Rule::uuid().JsonResponse or Resource classes.UUIDv7 for time-ordered indexes.importFromSqlServer()/toSqlServer() for automatic GUID conversion.UUIDv4 (random) or implement custom binary storage.keyword type for exact matches.| Phase | Action | Tools/Methods | Risk Mitigation |
|---|---|---|---|
| 1. Pilot | Replace non-critical IDs (e.g., audit logs, API keys) with UUIDv4. |
Uuid::v4(), Eloquent uuid() casting, Laravel validation rules. |
Rollback to legacy IDs if performance issues arise. |
| 2. Database | Migrate core models to UUIDv7 for time-ordered indexing. |
Uuid::v7(), database-specific UUID indexing (e.g., PostgreSQL uuid-ossp). |
Benchmark indexing performance; test with production-like data volumes. |
| 3. APIs | Standardize UUID serialization (string/hex) in responses. | Laravel JsonSerializable, API Resources, OpenAPI specs. |
Validate backward compatibility with existing clients. |
| 4. Auth | Enforce UUIDv4 for auth tokens and sensitive identifiers. |
Uuid::v4(), Laravel Sanctum/Passport integration. |
Audit token generation performance under load. |
| 5. Legacy | Replace UUIDv1 with UUIDv7 in remaining tables. |
Custom migration scripts, data validation. | Test cross-version compatibility (e.g., UUIDv1 → UUIDv7 imports). |
| 6. Search | Integrate UUIDs with Scout/Algolia via string casting. | Custom Scout analyzers, Elasticsearch keyword mappings. | Monitor search performance degradation. |
uuid() casting and JsonSerializable.Illuminate\Validation\Rule::uuid() or custom rules.UUIDv7 indexes work out-of-the-box.UUIDv7 benefits from time-ordering.importFromSqlServer().UUIDv4 or binary storage with custom accessors.composer.json.composer require webpatser/uuid
// app/Models/Concerns/HasUuid.php
trait HasUuid {
public static function bootHasUuid() {
static::creating(function ($model) {
$model->{$model->getKeyName()} = match ($model->uuidVersion()) {
'v4' => Uuid::v4(),
'v7' => Uuid::v7(),
default => throw new \RuntimeException('UUID version not configured'),
};
});
}
}
Schema::table('users', function (Blueprint $table) {
$table->uuid('id')->primary()->index();
$table->uuid('api_token')->unique()->nullable();
});
use Webpatser\Uuid\Uuid;
$validator = Validator::make($request->all(), [
'id' => ['required', 'uuid'],
How can I help you explore Laravel packages today?