erashdan/hashid

该软件包最新版本(1.1.0)没有提供许可证信息。

简单的软件包,用于对优雅的主键进行哈希处理

1.1.0 2021-01-05 13:37 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.