kra8/laravel-snowflake is a Laravel package for snowflake for laravel and lumen..
It currently has 186 GitHub stars and 446.521 downloads on Packagist (latest version v2.5.0).
Install it with composer require kra8/laravel-snowflake.
Discover more Laravel packages by kra8
or browse all Laravel packages to compare alternatives.
Last updated
This Laravel package to generate 64 bit identifier like the snowflake within Twitter.
composer require "kra8/laravel-snowflake"
php artisan vendor:publish --provider="Kra8\Snowflake\Providers\LaravelServiceProvider"
composer require "kra8/laravel-snowflake"
// Add this line
$app->register(Kra8\Snowflake\Providers\LumenServiceProvider::class);
Get instance
$snowflake = $this->app->make('Kra8\Snowflake\Snowflake');
or
$snowflake = app('Kra8\Snowflake\Snowflake');
Generate snowflake identifier
$id = $snowflake->next();
Add the Kra8\Snowflake\HasSnowflakePrimary 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 Kra8\Snowflake\HasSnowflakePrimary;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasSnowflakePrimary, Notifiable;
}
Column type id is supported.
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Since JavaScript cannot handle 64-bit integers, there is also HasShortPrimary, which creates an ID for a 53-bit integer that can be handled by JavaScript.
To use it, simply change HasSnowflakePrimary to HasShortPrimary.
<?php
namespace App;
use Kra8\Snowflake\HasShortflakePrimary;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasShortflakePrimary, Notifiable;
}
If config/snowflake.php not exist, run below:
php artisan vendor:publish