Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Uuid Laravel Package

ramsey/uuid

Generate and work with UUIDs in PHP using ramsey/uuid. Create v1, v4, and other UUID types, parse and validate UUID strings, and integrate easily via Composer. Well-documented, widely used, and standards-aware for reliable identifiers.

View on GitHub
Deep Wiki
Context7

A PHP library for generating and working with universally unique identifiers (UUIDs).

Frequently asked questions about Uuid
How do I replace Laravel’s Str::uuid() with ramsey/uuid for consistent UUID generation?
Replace `Str::uuid()` with `Uuid::uuid4()` (random) or `Uuid::uuid7()` (time-ordered) in your models/services. For Eloquent, use the `hasCast` trait or a custom accessor like `protected $casts = ['id' => 'uuid']`. This ensures RFC 4122 compliance across your app.
Can ramsey/uuid generate time-ordered UUIDs (v7) for analytics or audit logs in Laravel?
Yes. Use `Uuid::uuid7()` for millisecond-precision time-ordered IDs, ideal for analytics or audit trails. It’s collision-resistant and integrates natively with Laravel’s Eloquent and API responses via `Stringable` and `JsonSerializable`.
What’s the best way to store UUIDs in MySQL/PostgreSQL for Laravel Eloquent models?
Use `uuid()` in PostgreSQL or `binary(16)` in MySQL for optimal storage. For SQLite, store as `TEXT` (36 chars) or `BLOB` (16 bytes). Laravel’s `UuidCast` handles conversion automatically, so your models remain agnostic to the underlying storage.
How do I validate UUIDs in Laravel API requests or DTOs?
Use `Uuid::isValid($uuidString)` for strict RFC 4122 validation. In Laravel forms, add `'uuid'` to your validation rules, or use a custom validator like `Validator::extend('uuid', fn ($attr, $value) => Uuid::isValid($value));`.
Will ramsey/uuid work with Laravel Scout for Elasticsearch or MongoDB?
Absolutely. Use `Uuid::getBytes()` for MongoDB’s `_id` field or Elasticsearch’s binary mapping. For Scout, ensure your model’s primary key is cast as a UUID (e.g., `hasCast(['id' => UuidCast::class])`) to avoid serialization issues.
Is ramsey/uuid compatible with Laravel’s caching systems like Redis?
Yes. Store UUIDs as binary keys in Redis using `Uuid::getBytes()` for efficiency, or as strings with `Uuid::toString()`. Both methods work seamlessly with Laravel’s cache drivers, including Memcached.
How do I migrate from integer IDs to UUIDs in an existing Laravel database?
Phase it gradually: 1) Add a new UUID column to tables, 2) Backfill UUIDs using `Uuid::fromString()` or `Uuid::uuid7()`, 3) Update Eloquent models to use the new column, and 4) Deprecate integer IDs in new APIs. Use hybrid IDs (e.g., `id` as UUID, `legacy_id` as integer) during transition.
Are there performance concerns with UUID generation in high-throughput Laravel APIs?
No significant overhead. `Uuid::uuid7()` and `Uuid::uuid4()` generate IDs in microseconds. For caching, reuse generators (e.g., singleton `UnixTimeGenerator` for v7) to avoid regeneration costs. Benchmark against `Str::uuid()`—results are comparable.
Does ramsey/uuid support UUIDv1 (MAC-based) for legacy systems in Laravel?
Yes, via `Uuid::uuid1()`. It’s useful for legacy systems requiring MAC address-based IDs, though v1 is deprecated in RFC 4122. For new projects, prefer `uuid7()` (time-ordered) or `uuid4()` (random) for better scalability and security.
What are the alternatives to ramsey/uuid for Laravel, and why choose this package?
Alternatives include `symfony/uuid` (simpler but less feature-rich) or `webtoken/jwt-framework` (for JWT-specific UUIDs). Choose `ramsey/uuid` for RFC 4122 compliance, support for v7/v8, and seamless Laravel integration (Eloquent, APIs, databases). It’s also the most actively maintained and widely adopted.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codraw/framework-extra-bundle
codraw/messenger
codraw/security
codraw/mailer
codraw/contracts
codraw/profiling
codraw/dependency-injection
codraw/tester
codraw/core
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony