erashdan / hashid
该软件包最新版本(1.1.0)没有提供许可证信息。
简单的软件包,用于对优雅的主键进行哈希处理
1.1.0
2021-01-05 13:37 UTC
Requires
- php: >=7.1.3
- hashids/hashids: ^3.0
- illuminate/container: ~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0
- illuminate/contracts: ~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0
- illuminate/database: ~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0
Requires (Dev)
- orchestra/testbench: ~3.4.2|~3.5.0|~3.6.0|~3.7.0|~3.8.0|^4.0|^7.0
- phpunit/phpunit: ^5.7|6.2|^7.0
This package is auto-updated.
Last update: 2024-09-26 00:35:13 UTC
README
此软件包对优雅记录的主键进行哈希处理。
// Get Hash ID $user = \App\User::first(); $user->hashed_id; //x7LR5oQJleJX60yPpNWV
安装
此软件包可在 Laravel 5.5 或更高版本中使用。
您可以通过 composer 安装此软件包
composer require erashdan/hashid
Laravel 的包自动发现将自动为您注册服务提供者。
然后您需要将配置发布到您的项目中
php artisan vendor:publish --provider="Erashdan\Hashid\HashidServiceProvider" --tag="config"
并在 .env 文件中添加用于哈希的密钥
HASHID_KEY=SET_YOUR_KEY
或者
使用 Laravel 自身的 app 密钥,将 config/hashid.php
中的 key 参数更改为 Laravel 的应用程序密钥
'key' => env('APP_KEY'),
您还可以通过 .env
文件更改结果哈希的长度。
HASHID_LENGTH=6
使用
Eloquent 默认不实现 hashid,因此您应使用软件包提供的 trait。
use Illuminate\Database\Eloquent\Model; use Erashdan\Hashid\Traits\Hashid; class Post extends Model { use Hashid;
然后您可以在 eloquent 对象本身上使用 hashed_id 属性。
$post = \App\Post::first(); $post->hashed_id; //x7LR5oQJleJX60yPpNWV
或通过哈希查找资源
$post = \App\Post::FindOrFailHashed('x7LR5oQJleJX60yPpNWV'); $post->id; //1
验证
您可以验证哈希 ID 是否存在于模型中
request()->validate([ 'post_id' => 'hashed_exists:' . \App\Post::class ]);
测试
composer test
致谢
待办事项
- [x] Build dev version.
- [] Create command for key generater.
- [] Can store hash id on database.
- [] Can be cached.