shabushabu / laravel-uid
v0.3.0
2024-07-03 06:41 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^11.0
- illuminate/database: ^11.0
- spatie/laravel-package-tools: ^1.16
- sqids/sqids: ^0.4.1
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- pestphp/pest-plugin-type-coverage: ^2.8
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
This package is auto-updated.
Last update: 2024-10-03 07:17:22 UTC
README
为您的模型添加类似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)。有关更多信息,请参阅许可文件