leganz / laravel-uuid
laravel uuid 是一个简单的、自动生成的UUID生成器,适用于基于Laravel的任何模型。
Requires
- php: ~5.6|~7.0|^8.0
- illuminate/support: 5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|6.*|7.*|8.*
Requires (Dev)
- laravel/framework: 5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|6.*|7.*|8.*
- phpunit/phpunit: 5.5.*|7.0.*|8.0.*
- squizlabs/php_codesniffer: ^2.3
README
这是一个简单的、自动生成的UUID生成器,适用于Laravel 5.5及以上版本的任何模型。当使用此包时,每次创建新条目,您将获得以下功能
- 自动生成
uuid
。 - 自动将其分配到数据库中的
uuid
字段。 - 通过
uuid
方法轻松查找。
什么是UUID?
UUID(通用唯一标识符)是一个128位的数,用于在计算机系统中标识信息。它是一个由32个数字和字母组成的36个字符的标识符,其中包含四个连字符。例如:123E4567-E89b-12D3-A456-426655440000
,包含字母和数字,可以唯一地标识某个东西。您可以在这里了解更多信息:这里
有哪些好处?
-
在使用分布式系统时,您可以非常有信心主键不会发生冲突。
-
当构建大型应用程序时,如果自增主键不理想。
-
这使得复制变得非常简单(与int相反,这使得它真的很难)
-
足够安全,不会向用户显示您正在通过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)。请参阅许可证文件获取更多信息。