ryangjchandler/laravel-uuid

此包已废弃,不再维护。未建议替代包。

一个用于为 Eloquent 模型添加 UUID 的小包。

v2.0.0 2023-02-15 13:42 UTC

This package is auto-updated.

Last update: 2023-07-01 00:16:58 UTC


README

警告:此包不再维护。Laravel 现在已经为 Eloquent 模型提供了 生成 UUID 和 ULID 的第一方支持,请使用该功能。

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

安装

您可以通过 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::findByUuidModel::findByUuidOrFail 方法快速从 UUID 中检索模型。这些方法的行为与 Model::findModel::findOrFail 相同。

2. 在 ServiceProvider 中进行批量注册

如果您想使用默认设置并希望避免将更多特质添加到模型中,您可以在 ServiceProviderboot 方法中批量注册您的模型。

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)。请参阅授权文件获取更多信息。