I would use the same database for both and do multitenancy.
There is a good tutorial on that here https://laracasts.com/series/multitenancy-in-practice
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
I need the simplest way of how I would have one installation of laravel, serving a site. But depending on the url, I can access different databases. for example:
www.domainname.com/company1/login - database1 www.domainname.com/company2/login - database2
So, the site being served is the exact same site. But, each part has its own login, and accesses a different database.
I know I can do this by having multiple installations of laravel, and that how I am doing it right now. but I wanna be able to just update ONE version
Thanks
simple fast full working example:
// config/companies.php
return [
'company1' => 'company1',
'company2' => 'company2',
'default' => 'mysql',
];
// config/database.php
// defaut for mysql +
'company1' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE_1', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
],
'company2' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE_2', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
],
// .env
DB_DATABASE=some_db_name
DB_DATABASE_1=some_db1_name
DB_DATABASE_2=some_db2_name
// middleware.php
public function handle($request, \Closure $next)
{
$company = request()->segment(2) ?? 'default';
$connection = $this->getConnectionForCompany($company);
config()->set('database.default', $connection);
DB::purge();
return $next($request);
}
protected function getConnectionForCompany(string $company)
{
if (! $connection = config("companies.$company")) {
$connection = config("companies.default");
}
return $connection;
}
// Kernel.php
protected $middleware = [
...
SomeMiddleware::class,
];
// api.php
Route::prefix('{company}')->group(function () {
Route::get('/test', function () {
return \App\Models\User::latest()->first(); // different results for /api/company1/test, /api/company2/test, etc
});
});
Please or to participate in this conversation.