PHPackages                             linushstge/number-pool - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. linushstge/number-pool

ActiveLibrary[Database &amp; ORM](/categories/database)

linushstge/number-pool
======================

Create a shared Number Pool for each of business number ranges to use native MySQL / MariaDB ``FOR UPDATE`` atomic locks if you run on a MySQL Master/Master Replication or on galera cluster.

0.9(3y ago)13MITPHPPHP ^8.0

Since Sep 8Pushed 3y ago2 watchersCompare

[ Source](https://github.com/linushstge/number-pool)[ Packagist](https://packagist.org/packages/linushstge/number-pool)[ RSS](/packages/linushstge-number-pool/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

Eloquent Trait for unique Model ascending numbers
=================================================

[](#eloquent-trait-for-unique-model-ascending-numbers)

Create a shared Number Pool for each of business number ranges to use native MySQL / MariaDB `FOR UPDATE` atomic locks if you run on a MySQL Master/Master Replication or on galera cluster or if you have multiple message queue workers which are consuming the same jobs.

If you're running on replication you're primary auto increments are probably not reliable for unique ascending numbers. With this Eloquent trait your able to generate ascending unique numbers while using InnoDB's native `FOR UPDATE` row lock.

**Example Invoice Table on a Galera Cluster with three nodes:**

idtypenumber1invoice10003invoice10016invoice1002With Master-Master Replication or Galera cluster your primary auto increment is not reliable for any ascending numbers.

Installation
------------

[](#installation)

This package can be installed through composer:

```
composer require linushstge/number-pool
```

After installation, you have to create a new migration with `artisan:make migration` for your number pools.

```
php artisan make:migration CreateNumberPool
```

Example:

```
