1. Go to this page and download the library: Download splitstack/translucid library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
splitstack / translucid example snippets
use App\Models\Post;
use Illuminate\Database\Migrations\Migration;
use Splitstack\Translucid\Facades\Translucid;
return new class extends Migration
{
public function up(): void
{
Translucid::observe(Post::class);
}
public function down(): void
{
Translucid::unobserve(Post::class);
}
};
use Splitstack\Translucid\Concerns\HasTranslucid;
class Post extends Model
{
use HasTranslucid;
}
use Laravel\Pennant\Feature;
use Splitstack\Translucid\Features\TranslucidFromDB;
use Splitstack\Translucid\Features\TranslucidFromApp;
// Activate DB mode globally
Feature::activate(TranslucidFromDB::class);
// Or activate App mode for a specific user
Feature::for($user)->activate(TranslucidFromApp::class);
return [
// Base channel name (private channel). Multi-tenant mode appends ".{tenant}".
'default_channel' => 'translucid',
// Set a TenantDriver class for per-tenant channel scoping and per-tenant
// PostgreSQL connections. null = single-tenant.
'tenant_driver' => null,
// Attribute on the Tenant model appended to the channel name.
// Produces channels like "translucid.{tenant.space}".
'tenant_channel_attribute' => 'space',
// Laravel DB connection used for per-tenant PDO connections.
'tenant_connection' => 'tenant',
// Microseconds to sleep between LISTEN polling loops.
'listen_sleep' => 50_000,
];
// config/translucid.php
'tenant_driver' => \Splitstack\Translucid\Tenancy\SpatieMultitenancyDriver::class,
'tenant_channel_attribute' => 'space', // attribute on your Tenant model
'tenant_connection' => 'tenant', // Laravel DB connection for tenant DBs
use PDO;
use Splitstack\Translucid\Contracts\TenantDriver;
class MyTenantDriver implements TenantDriver
{
// Returns the broadcast channel for the currently active tenant.
public function resolveChannel(): string
{
return 'translucid.' . MyTenancy::current()->slug;
}
// Returns a channel => PDO map. Each PDO must already have LISTEN issued.
public function resolveListenConnections(): array
{
$connections = [];
foreach (Tenant::all() as $tenant) {
$pdo = new PDO(/* ... */);
$pdo->exec('LISTEN translucid');
$connections['translucid.' . $tenant->slug] = $pdo;
}
return $connections;
}
// Returns the Pennant scope string for the given tenant.
public function resolveFeatureScope(mixed $scope): ?string
{
return 'translucid.' . $scope->slug;
}
}
'tenant_driver' => MyTenantDriver::class,
use Splitstack\Translucid\Translucid;
Translucid::resolveChannelUsing(fn () => 'my-app.' . auth()->id());