################################################
################################################
composer require enfil/sharding
Add Enfil\Sharding\ShardingServiceProvider::class, to the providers array in /config/app.php.
Add 'ShardManager' => \Enfil\Sharding\Facades\ShardManager::class, to the alias list in /config/app.php.
php artisan vendor:publish --provider="Enfil\Sharding\ShardingServiceProvider" --tag="config" --force
You can configurate sharding for all your services in the sharding.php config file located in the config directory.
First of all you should set your service:
\ShardManager::setService('auth');
When you're inserting any element into your database you should generate unique ID for it. You can get next id using:
$id = \ShardManager::getNextId();
Than you can choose shard (database connection) using:
$shard = \ShardManager::getShardById($id);
Now you can insert your data to current shard:
\DB::connection($shard)->table('t')->insert(
[...]
);
After inserting you should increment id-generator:
\ShardManager::increment();
To select your data by id you should get a shard:
$shard = \ShardManager::getShardById($id);
Than you can get data from current shard:
DB::connection($shard)->table('t')->select(...);