emadadly/laravel-uuid 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

emadadly/laravel-uuid

最新稳定版本:v1.3.5

Composer 安装命令:

composer require emadadly/laravel-uuid

包简介

laravel uuid a simple, automatic UUID generator for any model based on Laravel.

README 文档

README

Latest Version on Packagist Software License Quality Score Total Downloads

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 uuid automatically .
  • Assign it to uuid field in database automatically.
  • easy find it based uuid method.

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?

  1. With distributed systems you can be pretty confident that the primary key’s will never collide.

  2. When building a large scale application when an auto increment primary key is not ideal.

  3. It makes replication trivial (as opposed to int’s, which makes it REALLY hard)

  4. 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.

统计信息

  • 总下载量: 412.24k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 120
  • 点击次数: 1
  • 依赖项目数: 5
  • 推荐数: 0

GitHub 信息

  • Stars: 117
  • Watchers: 2
  • Forks: 39
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-02-14