mucts / laravel-snowflake
雪花算法:分布式环境,生成全局唯一的订单号
Installs: 104
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 0
Forks: 5
Open Issues: 0
pkg:composer/mucts/laravel-snowflake
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.4JSON PHP ExtensionOpenSSL PHP ExtensionGMP PHP ExtensionBCMath PHP Extensionlaravel/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