shabushabu/laravel-uid

v0.3.0 2024-07-03 06:41 UTC

This package is auto-updated.

Last update: 2024-10-03 07:17:22 UTC


README

Latest Version on Packagist Total Downloads

为您的模型添加类似Stripe的全局ID,这些ID可以解码回它们的整数ID。

安装

注意

请注意,这是一个新的包,尽管它经过了充分的测试,但它应该被视为预发布软件

您可以通过composer安装此包

composer require shabushabu/laravel-uid

使用以下命令发布配置文件

php artisan vendor:publish --tag="uid-config"

前缀

然后您需要将所有模型添加到配置文件中的prefixes数组中

return [
    'prefixes' => [
        'usr' => \App\Models\User::class,
    ],
];

创建自定义字母表

运行以下命令,并将输出添加到您的.env文件中

php artisan uid:alphabet

用法

每个模型的第一个步骤应该是添加提供的HasUid特质。这确保了路由模型绑定与UID按预期工作。

use ShabuShabu\Uid\Concerns\HasUid;

class User extends Model
{
    use HasUid;
}

从ID进行编码

use ShabuShabu\Uid\Service\Uid;

$uid = Uid::make()->encodeFromId(User::class, 1);

// something like: usr_86Rf07xd4z

编码模型

use ShabuShabu\Uid\Service\Uid;

$uid = Uid::make()->encode(User::find(1));

// something like: usr_86Rf07xd4z

解码UID

use ShabuShabu\Uid\Service\Uid;

$decoded = Uid::make()->decode('usr_86Rf07xd4z');

// returns an instance of DecodedUid::class

解码到模型

use ShabuShabu\Uid\Service\Uid;

$model = Uid::make()->decodeToModel('usr_86Rf07xd4z');

// returns an instance of User::class

$model = Uid::make()->withTrashed()->decodeToModel('usr_86Rf07xd4z');

// returns an instance of User::class, even if the model is trashed

检查UID是否有效

use ShabuShabu\Uid\Service\Uid;

$valid = Uid::make()->isValid('usr_86Rf07xd4z');

// returns true if the prefix exists

$valid = Uid::make()->isValid('usr_86Rf07xd4z', User::class);

// returns true if the prefix exists and belongs to the class

检索给定类的别名

use ShabuShabu\Uid\Service\Uid;

$alias = Uid::alias(User::class);

// returns usr

基于UID的模型信息

如果您有一个UID并且想要获取一些关于它的信息,则可以使用以下命令

php artisan uid:info

加分想法

使用前缀作为您的形态映射

use Illuminate\Database\Eloquent\Relations\Relation;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Relation::enforceMorphMap(config('uid.prefixes'));
    }
}

警告

请注意,此包**不**适用于字符串或复合主键。底层Squids库支持整数数组的编码,因此复合主键可能最终会得到支持。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅我们的安全策略

致谢

许可协议

MIT许可协议(MIT)。有关更多信息,请参阅许可文件