angle/keyable

为Laravel应用中的任何模型添加随机唯一键。

v1.0 2019-02-03 19:00 UTC

This package is auto-updated.

Last update: 2024-09-12 06:32:55 UTC


README

简介

许多Web应用需要对其数据的唯一引用。有时,自增和uuid对于特定的用例来说还不够。Keyable通过提供通过特质自动在您的模型上调用的方法来尝试解决这个问题。

要求

  • PHP >= 7.1
  • Laravel >= 5.6
  • 关系型数据库(未在其他驱动程序上测试)

安装

通过Composer安装包

composer require angle/keyable

使用Keyable特质

如果模型使用Angle\Keyable\Keyable,则会在creating() Eloquent模型事件上自动生成唯一键。

<?php

namespace App;

use Angle\Keyable\Keyable;
use Illuminate\Database\Eloquent\Model;

class Vault extends Model
{
    use Keyable;

    /**
     * Attributes containing unique keys.
     *
     * @var array
     */
    public $keys = ['fingerprint' => 256];
}

实现自定义策略

默认情况下,Keyable特质使用Laravel Str::random()助手来生成唯一键。您可以通过在模型上实现keyableStrategy()方法来覆盖此行为。

<?php

namespace App;

use Angle\Keyable\Keyable;
use Illuminate\Database\Eloquent\Model;

class Endpoint extends Model
{
    use Keyable;

    /**
     * Attributes containing unique keys.
     *
     * @var array
     */
    public $keys = [
        'public_key' => 128,
        'private_key' => 128
    ];

    public function keyableStrategy(string $attribute, int $length) : string
    {
        $prefix = 'public-';

        if ($attribute == 'private_key') {
            $prefix = 'private-';
        }

        return $prefix . \Str::random($length);
    }
}

贡献

欢迎贡献!如果您有任何想要实现的想法,请随时提交pull请求。

许可证

MIT

版权 © 2019 Angle Software