Tenancy Multi-database
Tenancy multi-database integration for FilamentPHP
Author:
Fady Mondy
Documentation

Tenancy multi-database integration for FilamentPHP
[!WARNING]
We have a known problem withroute:cacheif you find a problem with multi-database connection from your tenant side you may face this problem just usephp artisan route:clearand it will be fixed.
#Screenshots

#Features
- Multi Database
- Create Tenant Resource
- Sync Tenant Resource
- Password Change
- Tenant Impersonate
- Share Tenant Data
- Custom Theme For Tenant
- Livewire Component For Register New Tenant
#Installation
composer require tomatophp/filament-tenancy
after install your package please run this command
php artisan filament-tenancy:install
in your .env add this
CENTRAL_DOMAIN=tomatophp.test
where tomatophp.test is your central domain, and make sure you add a root user or a user have a permission to create database, then in your main central panel add this plugin
use TomatoPHP\FilamentTenancy\FilamentTenancyPlugin;
->plugin(FilamentTenancyPlugin::make()->panel('app'))
now you need to create a panel for tenancy app
php artisan filament:panel
and make the name same as ->panel('app'), in your tenancy app panel add this plugin
use TomatoPHP\FilamentTenancy\FilamentTenancyAppPlugin;
->plugin(FilamentTenancyAppPlugin::make())
now on your config\database.php add this code
...
'connections' => [
'dynamic' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
...
],
now run config:cache
php artisan config:cache
on your bootstrap\app.php add this middleware
use Stancl\Tenancy\Middleware\InitializeTenancyByDomain;
use Stancl\Tenancy\Middleware\InitializeTenancyBySubdomain;
->withMiddleware(function (Middleware $middleware) {
$middleware->group('universal', [
InitializeTenancyByDomain::class,
InitializeTenancyBySubdomain::class,
]);
})
#Allow Impersonate
you can allow impersonate to tanent panel with 1 click by use this method on your plugin
use TomatoPHP\FilamentTenancy\FilamentTenancyPlugin;
->plugin(
FilamentTenancyPlugin::make()
->panel('app')
->allowImpersonate()
)
#Publish Assets
you can publish config file by use this command
php artisan vendor:publish --tag="filament-tenancy-config"
you can publish views file by use this command
php artisan vendor:publish --tag="filament-tenancy-views"
you can publish languages file by use this command
php artisan vendor:publish --tag="filament-tenancy-lang"
you can publish migrations file by use this command
php artisan vendor:publish --tag="filament-tenancy-migrations"
#Other Filament Packages
Checkout our Awesome TomatoPHP
The author
Tenancy multi-database integration for FilamentPHP
From the same author
Menu Generator
Menu view generator using view component
Author:
Fady Mondy
Translations Manager
Manage your translation with DB and cache, you can scan an collect translation strings like `trans()` and `__()`, and translate them using UI
Author:
Fady Mondy
Meta Manager
Convert any model on your app to pluggable model using Meta and get ready to use relation manager on FilamentPHP panel
Author:
Fady Mondy
Sticky Notes
Add Sticky Notes to your dashboard with tons of options and style.
Author:
Fady Mondy
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle
Spotlight Pro
Browse your Filament Panel with ease. Filament Spotlight Pro adds a Spotlight/Raycast like Command Palette to your Filament Panel.
Dennis Koch