How to connect Dynamic database in Laravel

How to connect Dynamic database in Laravel

In this tutorial, i am showing you, how to manage multiple database connection in one laravel project. Sometimes, we need to multiple database for one project. Get ready for move...

Step 1: 

Create a new laravel using below command

composer create-project laravel/laravel demo --prefer-dist

Step 2:

As we manage multiple database connection dynamically, i am adding database name into the users table.


use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddDbNameInUsersTable extends Migration
    public function up()
        Schema::table('users', function (Blueprint $table) {

    public function down()
        Schema::table('users', function (Blueprint $table) {

Step 3:

Update User Model


namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
    use HasApiTokens, HasFactory, Notifiable;

    protected $fillable = [

Step 4:

Add route into web.php


use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TestController;

Route::get('user', [TestController::class, 'user'])->name('user');

Step 5:

Controller code

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use Config;
use Hash;
use DB;

class TestController extends Controller
    public function user(Request $request)
        $name = $request->name;
        $user = User::create([
            'name' => $name,
            'email' => $name.'',
            'password' => Hash::make('12345678'),
            'database_name' => $name,
        $preDatabase = Config::get('database.connections.mysql.database');
        DB::statement("CREATE DATABASE IF NOT EXISTS $name");

        $new = Config::set('database.connections.mysql.database', $user->database_name);

        Config::set('database.connections.mysql.database', $preDatabase);
        return dd('create database and user data');

Finally, we are done for configuring multiple database connection. Open any browser and serve the application. When you http://localhost:8000/user?name=first_database

Hope, it wil help you.

Get The latest Coding solutions.

Subscribe to the Email Newsletter