ryangjchandler / laravel-uuid
一个用于为 Eloquent 模型添加 UUID 的小包。
Requires
- php: ^8.0
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.11.0
Requires (Dev)
- brianium/paratest: ^6.2
- nunomaduro/collision: ^6.0
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.23
README
警告:此包不再维护。Laravel 现在已经为 Eloquent 模型提供了 生成 UUID 和 ULID 的第一方支持,请使用该功能。
安装
您可以通过 composer 安装此包
composer require ryangjchandler/laravel-uuid
用法
有 2 种方法可以将自动 UUID 生成应用于您的模型
1. 应用特质
将 RyanChandler\Uuid\Concerns\HasUuid
特质添加到您的模型中
class Post extends Model { use \RyanChandler\Uuid\Concerns\HasUuid; }
这将自动将时间排序的 UUID 分配给模型中的 uuid
列。UUID 是使用 Laravel 提供的 Str::orderedUuid()
方法生成的。
如果您想更改使用的列,您可以在模型中定义一个 uuidColumn
方法
class Post extends Model { use \RyanChandler\Uuid\Concerns\HasUuid; public function uuidColumn(): string { return 'guid'; } }
findByUuid
& findByUuidOrFail
您可以使用 Model::findByUuid
和 Model::findByUuidOrFail
方法快速从 UUID 中检索模型。这些方法的行为与 Model::find
和 Model::findOrFail
相同。
2. 在 ServiceProvider
中进行批量注册
如果您想使用默认设置并希望避免将更多特质添加到模型中,您可以在 ServiceProvider
的 boot
方法中批量注册您的模型。
use RyanChandler\Uuid\Uuid; class AppServiceProvider extends ServiceProvider { public function boot() { Uuid::generateFor([ \App\Models\Post::class, ]); } }
在路由定义中使用 UUID
如果您想将您的 uuid
列用作默认的路由模型绑定列,您可以在模型中实现 RyanChandler\Uuid\Contracts\WithUuidRouteKey
接口。
这将强制 HasUuid
特质使用 uuid
列作为 getRouteKeyName
的返回值,Laravel 使用该值来确定如何接收用于隐式路由模型绑定的模型。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略。
鸣谢
授权
麻省理工学院许可证(MIT)。请参阅授权文件获取更多信息。