uthman/hashid

此包最新版本(1.2.1)没有提供许可证信息。

一个简单的包,用于散列优雅的主键,由 erashdan/hashid 分支而来

1.2.1 2022-03-18 15:59 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 的自有应用密钥,将 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\Models\Post::first();
$post->hashed_id; //x7LR5oQJleJX60yPpNWV

或者通过散列查找资源

$post = \App\Models\Post::FindOrFailHashed('x7LR5oQJleJX60yPpNWV');
$post->id; //1

验证

您可以验证散列 ID 是否存在于模型中

    request()->validate([
        'post_id' => 'hashed_exists:' . \App\Post::class
    ]);

测试

composer test

致谢