your-app-rocks/eloquent-uuid
最新稳定版本:2.5.0
Composer 安装命令:
composer require your-app-rocks/eloquent-uuid
包简介
Adds support for UUID generation automatically for Models Eloquents.
README 文档
README
Eloquent UUID
Simple and flexible Laravel package that adds support for UUID generation automatically for any Eloquent model.
- Generate
uuidautomatically. - Choose a custom name for the
uuidcolumn in your table. (default 'uuid') - Choose the version of the generated uuid. (default '4')
- Checks for
uuid versionandcolumn name. (throws the InvalidUuidVersionException and MissingUuidColumnException exceptions) - Prevents update on uuid value.
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.
Installation
You can install the package via Composer:
composer require your-app-rocks/eloquent-uuid
or via composer.json file
{
"require": {
"your-app-rocks/eloquent-uuid": "~2"
}
}
Usage
Create table
Create your table with a uuid column. For example:
<?php Schema::create('users', function (Blueprint $table) { $table->uuid('uuid'); $table->string('name'); $table->timestamps(); });
Create model
In your eloquent model, add trait HasUuid:
<?php namespace App\YourNameSpace; use Illuminate\Database\Eloquent\Model; use YourAppRocks\EloquentUuid\Traits\HasUuid; class User extends Model { use HasUuid; }
Create Controller
<?php namespace App\YourNameSpace; use App\YourNameSpace\User; use Illuminate\Http\Request; class UserController extends Controller { /** * When a new record is inserted into the table `(with the create() or save() methods)`, * Trait "HasUuid" will automatically generate a uuid version 4* for the 'uuid' column of your schema. */ public function store(Request $request) { $user = User::create($request->all()); // Automatically generate a uuid return $user->getUuid() // Return UUID value. } /** * Get User by custom 'UUID' key name - Implicit Binding. * See https://laravel.com/docs/5.8/routing#route-model-binding * * @param User $user * @return void */ public function show(User $user) { return $user; } //OR /** * Get User by scope query. */ public function show($uuid) { $user = User::findByUuid($uuid); return $user; } }
Customization
You can easily config the package for your needs by changing the column name and uuid version. For example:
<?php //Create table Schema::create('posts', function (Blueprint $table) { $table->uuid('universally_unique_id'); $table->string('title'); $table->timestamps(); }); //Eloquent Model class Post extends Model { use HasUuid; protected $uuidColumnName = 'universally_unique_id'; protected $uuidVersion = 1; // Available 1,3,4 or 5 protected $uuidString = ''; // Needed when $uuidVersion is "3 or 5" }
Advance Customization
This package was built to be flexible and easy to customize!
You can use trait Uuidable to create your own trait with your custom code.
Methods
YourAppRocks\EloquentUuid\Traits\Uuidable;
- getUuidColumnName()
// Get the column name. ( default 'uuid' ) - getUuid()
// Get the uuid value. - setUuid($value)
// Set the uuid value. - generateUuid()
// Generate the UUID value. ( Using Ramsey\Uuid ) - getUuidVersion()
// Get uuid version or default to 4. - getUuidString()
// Get string to generate uuid version 3 and 5. - validateUuidVersion()
// Validate uuid version.
Example custom code
Replacing trait HasUuid for MyUuidTrait:
<?php //Create table Schema::create('users', function (Blueprint $table) { $table->uuid('uuid'); $table->string('name'); $table->timestamps(); }); //Create MyUuidTrait with custom code use YourAppRocks\EloquentUuid\Traits\Uuidable; trait MyUuidTrait { use Uuidable; /** * Boot trait on the model. * * @return void */ public static function bootMyUuidTrait() { static::creating(function ($model) { // My custom code here. }); static::saving(function ($model) { // My custom code here. }); } // My custom code here. } //Create Model use MyUuidTrait; use Illuminate\Database\Eloquent\Model; class User extends Model { use MyUuidTrait; }
Change log
Please see CHANGELOG for more information on what has changed recently.
Testing
$ composer test
Contributing
Please see CONTRIBUTING for details.
Credits
This package is inspired by this package.
License
The MIT License (MIT). Please see License File for more information.
统计信息
- 总下载量: 84.54k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 67
- 点击次数: 1
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-03-18
