leganz/laravel-uuid

laravel uuid 是一个简单的、自动生成的UUID生成器,适用于基于Laravel的任何模型。

v1.3.4 2020-12-17 15:12 UTC

README

Latest Version on Packagist Software License Quality Score Total Downloads

这是一个简单的、自动生成的UUID生成器,适用于Laravel 5.5及以上版本的任何模型。当使用此包时,每次创建新条目,您将获得以下功能

  • 自动生成 uuid
  • 自动将其分配到数据库中的 uuid 字段。
  • 通过 uuid 方法轻松查找。

什么是UUID?

UUID(通用唯一标识符)是一个128位的数,用于在计算机系统中标识信息。它是一个由32个数字和字母组成的36个字符的标识符,其中包含四个连字符。例如:123E4567-E89b-12D3-A456-426655440000,包含字母和数字,可以唯一地标识某个东西。您可以在这里了解更多信息:这里

有哪些好处?

  1. 在使用分布式系统时,您可以非常有信心主键不会发生冲突。

  2. 当构建大型应用程序时,如果自增主键不理想。

  3. 这使得复制变得非常简单(与int相反,这使得它真的很难)

  4. 足够安全,不会向用户显示您正在通过ID获取信息,例如 https://example.com/user/25/settings

安装

要开始使用,请要求此包

  • 通过Composer
 composer require emadadly/laravel-uuid
  • 通过composer.json文件

将以下内容添加到项目的 composer.json 文件的 require 部分。

"emadadly/laravel-uuid": "1.*",

运行 composer update 以下载包

 composer update

最后,您还需要添加 ServiceProvider

Laravel 5.5 及以上版本

使用包自动发现功能,无需编辑config/app.php文件。

Laravel 5.4 及以下版本

您需要在 config/app.php 中添加 ServiceProvider,如下所示

'providers' => [
   ...
   Emadadly\LaravelUuid\LaravelUuidServiceProvider::class,
],

您还可以发布配置文件

php artisan vendor:publish --provider="Emadadly\LaravelUuid\LaravelUuidServiceProvider"

并设置您的默认_uuid_column 设置,如果您有一个应用级别的默认值。

我们的包默认假设列名为 uuid。如果您想用 uuid 替换默认的 id,请按照以下步骤操作。

使用方法

迁移

当使用迁移时,应将 uuid 添加为列类型,并将名称设置为与 config/uuid.php 文件中的名称相同。

$table->uuid('uuid');

它将在我们的数据库模式中创建名为 uuid 的列和一个 char(36),以便准备好接收 Uuids。

简单地,模式看起来像这样。

Schema::create('users', function (Blueprint $table) {

  $table->increments('id');
  $table->uuid('uuid');
  ....
  ....
  $table->timestamps();
});

模型

在任何模型中使用此特性。

要设置模型以使用 Uuid,请简单地使用 Uuids 特性

use Illuminate\Database\Eloquent\Model;
use Emadadly\LaravelUuid\Uuids;

class ExampleModel extends Model
{
  use Uuids;
  ....
}

控制器

当您创建使用 Uuids 的模型的新实例时,我们的包将自动添加 Uuid。

// 'Uuid' will automatically generate and assign id field.
$model = ExampleModel::create(['name' => 'whatever']);

此外,当在控制器中使用 show、update 或 delete 方法时,通过 ExampleModel::uuid() 范围方法实现它非常容易

public function show($uuid)
{
  $example = ExampleModel::uuid($uuid);
  return response()->json(['example' => $example]);
}

用UUID替换默认ID

如果您想用UUID替换默认的id列,请确保在 config/uuid.php 文件中将 'default_uuid_column' => 'uuid', 设置为 'default_uuid_column' => 'id',

在您的迁移中,将id列的类型从 increments 更改为 uuid,并手动添加主键。 注意:这也适用于模型关系列,如果相关模型使用UUID,则列类型应反映这一点

Schema::create('users', function (Blueprint $table) {

  $table->uuid('id')->unique();
  $table->primary('id');
  ....
  // related model uses UUID, must change type
  $table->uuid('model_id');
  ....
  $table->timestamps();
});

然后在模型(s)上,您需要将递增标志设置为false。

use Illuminate\Database\Eloquent\Model;
use Emadadly\LaravelUuid\Uuids;

class ExampleModel extends Model
{
  use Uuids;
  ....

  /**
  * Indicates if the IDs are auto-incrementing.
  *
  * @var bool
  */
  public $incrementing = false;

  ....
}

支持

如果您对这个包有任何一般性问题,请随时在Twitter上联系我。

如果您认为您发现了一个问题,请使用GitHub问题跟踪器报告它,或者更好的是,Fork仓库并提交一个pull请求。

如果您正在使用这个包,我很乐意听听您的想法。谢谢!

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。