emadadly/laravel-uuid
Composer 安装命令:
composer require emadadly/laravel-uuid
包简介
laravel uuid a simple, automatic UUID generator for any model based on Laravel.
README 文档
README
A simple, automatic UUID generator for any model based on Laravel 5.5 and above, By using this package when each new entry you will get the following :
- Generate
uuidautomatically . - Assign it to
uuidfield in database automatically. - easy find it based
uuidmethod.
What is a UUID?
A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems. is a 36 character long identifier made up of 32 alphanumeric characters with four hyphens in amongst it.
For example:123E4567-E89b-12D3-A456-426655440000 containing letters and numbers. that will uniquely identify something. you can read more here
What are the benefits?
-
With distributed systems you can be pretty confident that the primary key’s will never collide.
-
When building a large scale application when an auto increment primary key is not ideal.
-
It makes replication trivial (as opposed to int’s, which makes it REALLY hard)
-
Safe enough doesn’t show the user that you are getting information by id, for example
https://example.com/user/25/settings
Installation
To get started, require this package
- Via Composer
composer require emadadly/laravel-uuid
- Via composer.json file
Add the following to the require section of your projects composer.json file.
"emadadly/laravel-uuid": "1.*",
Run composer update to download the package
composer update
Finally, you'll also need to add the ServiceProvider
Laravel 5.5 and above
Uses package auto discovery feature, no need to edit the config/app.php file.
Laravel 5.4 and below
You need to add the ServiceProvider in config/app.php with the following
'providers' => [ ... Emadadly\LaravelUuid\LaravelUuidServiceProvider::class, ],
You could also publish the config file:
php artisan vendor:publish --provider="Emadadly\LaravelUuid\LaravelUuidServiceProvider"
and set your default_uuid_column setting, if you have an app-wide default.
Our package assumes the column is uuid by default. If you want to replace the default id follow these steps.
Usage
Migrations
When using the migration you should add uuid as column type, and set the name it the same name in the config/uuid.php file.
$table->uuid('uuid');
it's will create column uuid name and a char(36) inside of our database schema, To be ready to receive Uuids.
Simply, the schema seems something like this.
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->uuid('uuid'); .... .... $table->timestamps(); });
Models
Use this trait in any model.
To set up a model to using Uuid, simply use the Uuids trait:
use Illuminate\Database\Eloquent\Model; use Emadadly\LaravelUuid\Uuids; class ExampleModel extends Model { use Uuids; .... }
Controller
When you create a new instance of a model which uses Uuids, our package will automatically add Uuid.
// 'Uuid' will automatically generate and assign id field. $model = ExampleModel::create(['name' => 'whatever']);
Also when use show, update or delete method inside the Controller, it very easy to implement through ExampleModel::uuid() scope method
public function show($uuid) { $example = ExampleModel::uuid($uuid); return response()->json(['example' => $example]); }
Replacing default ID with UUID
If you want to replace the default id column with the uuid be sure to set 'default_uuid_column' => 'uuid', to 'default_uuid_column' => 'id', in the config\uuid.php file.
On your migration(s), change the id column type from increments to uuid as well as manually adding the primary key. Note: This also applies to model relationship columns, if the related model is using an UUID, the column type should reflect that
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(); });
Then on the model(s) you will need to set the incrementing flag to 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; .... }
Support
If you are having general issues with this package, feel free to contact me on Twitter.
If you believe you have found an issue, please report it using the GitHub issue tracker, or better yet, fork the repository and submit a pull request.
If you're using this package, I'd love to hear your thoughts. Thanks!
License
The MIT License (MIT). Please see License File for more information.
emadadly/laravel-uuid 适用场景与选型建议
emadadly/laravel-uuid 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 420.18k 次下载、GitHub Stars 达 117, 最近一次更新时间为 2017 年 02 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「generator」 「uuid」 「laravel」 「guid」 「laravel-uuid」 「Laravel UUID」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 emadadly/laravel-uuid 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 emadadly/laravel-uuid 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 emadadly/laravel-uuid 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Memio's PrettyPrinter, used to generate PHP code from given Model
DrUUID RFC 4122 library for PHP
Trait to generate uuid when creating models
SilverStripe module for adding an unique id (UUID) to a DataObject
A CakePHP plugin for using secure, non-incremental IDs for entities
Add a factory management for Laramore
统计信息
- 总下载量: 420.18k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 120
- 点击次数: 23
- 依赖项目数: 5
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-02-14