mucts / laravel-snowflake
雪花算法:分布式环境,生成全局唯一的订单号
1.4.2
2020-05-24 17:15 UTC
Requires
- php: ^7.4
- ext-bcmath: ^7.4
- ext-gmp: ^7.4
- ext-json: ^7.4
- ext-openssl: ^7.4
- laravel/framework: ^7.0
Requires (Dev)
- phpunit/phpunit: ^9.0
README
Laravel Snowflake
This Laravel package to generate 64 bit identifier like the snowflake within Twitter.
Installation
Server Requirements
you will need to make sure your server meets the following requirements:
php ^7.4
JSON PHP Extension
OpenSSL PHP Extension
GMP PHP Extension
BCMath PHP Extension
laravel/framework ^7.0
Laravel Installation
composer require mucts/laravel-snowflake
Usage
Generate snowflake identifier
$id = Snowflake::next();
Analysis snowflake identifier
$info = Snowflake::info($id);
Usage with Eloquent
Add the MuCTS\LaravelSnowflake\Models\Traits\Snowflake
trait to your Eloquent model.
This trait make type snowflake
of primary key. Trait will automatically set $incrementing property to false.
<?php namespace App; use MuCTS\LaravelSnowflake\Models\Traits\Snowflake; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Snowflake, Notifiable; }
Finally, in migrations, set the primary key to bigInteger
, unsigned
and primary
.
/** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { // $table->increments('id'); $table->bigInteger('id')->unsigned()->primary(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); }
Configuration
If config/snowflake.php
not exist, run below:
php artisan vendor:publish