jun 241d78f74c first commit 6 dni temu
..
config 241d78f74c first commit 6 dni temu
src 241d78f74c first commit 6 dni temu
tests 241d78f74c first commit 6 dni temu
.gitignore 241d78f74c first commit 6 dni temu
.travis.yml 241d78f74c first commit 6 dni temu
LICENSE 241d78f74c first commit 6 dni temu
README.md 241d78f74c first commit 6 dni temu
composer.json 241d78f74c first commit 6 dni temu
composer.lock 241d78f74c first commit 6 dni temu
phpunit.xml.dist 241d78f74c first commit 6 dni temu

README.md

Laravel Snowflake

Build Status Latest Stable Version License

This Laravel package to generate 64 bit identifier like the snowflake within Twitter.

Laravel Installation

composer require "kra8/laravel-snowflake"

php artisan vendor:publish --provider="Kra8\Snowflake\Providers\LaravelServiceProvider"

Lumen Installation

  • Install via composer

    composer require "kra8/laravel-snowflake"
    
  • Bootstrap file changes Add the following snippet to the bootstrap/app.php file under the providers section as follows:

    // Add this line
    $app->register(Kra8\Snowflake\Providers\LumenServiceProvider::class);
    

Usage

Get instance

$snowflake = $this->app->make('Kra8\Snowflake\Snowflake');

or

$snowflake = app('Kra8\Snowflake\Snowflake');

Generate snowflake identifier

$id = $snowflake->next();

Usage with Eloquent

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();
    });
}

JavaScript support

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\HasShortPrimary; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable {

use HasShortPrimary, Notifiable;

}


# Configuration
If `config/snowflake.php` not exist, run below:

php artisan vendor:publish ```

Licence

MIT licence