Share this:

Hello dev, Today we are going to learn How to use multiple databases in Laravel. Laravel, the popular PHP framework, provides a robust database abstraction layer called Eloquent ORM, which simplifies database interactions.

While working on complex applications, you might encounter scenarios where you need to connect to and interact with multiple databases simultaneously.

In this blog post, we will explore how to configure and use multiple databases in Laravel, enabling you to handle diverse data requirements efficiently.

Configuring Database Connections:

The first step in using multiple databases in Laravel is configuring the database connections. Laravel provides a configuration file called database.php located in the config directory of your application.

Inside this file, you can define multiple database connections by specifying the connection details for each database.

To get started, open the database.php file and locate the connections array. Add a new array element for each database you want to connect to. For example:

'connections' => [
    'mysql' => [
        // Default database connection details
    'second_db' => [
        // Second database connection details
    // Add more database connections as needed

In this example, we have added a new database connection called ‘second_db‘. You can customize the connection details, such as driver, host, database name, username, and password, according to your specific database setup.

Also Read: Laravel – Eloquent “Has”, “With”, “WhereHas” – What Do They Mean?

Defining Models with Different Connections:

Once you have configured the database connections, you can specify which connection a particular model should use.

By default, Laravel assumes that models will use the default database connection. However, you can override this behavior by defining the $connection property in your models.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
     * The connection name for the model.
     * @var string
    protected $connection = 'second_db';

    // Model definition continues...

In the above example, the User model is configured to use the ‘second_db’ connection. Any queries performed on the User model will now use the specified database connection.

Switching Database Connections Dynamically:

Laravel provides a convenient way to switch between multiple database connections dynamically.

You can use the connection() method on the Eloquent query builder to specify the desired database connection for a specific query.

$users = DB::connection('second_db')->table('users')->get();

In this example, we are fetching users from the ‘users’ table using the ‘second_db’ connection.

You can perform various database operations using this approach, such as querying, inserting, updating, or deleting data, using the appropriate connection.

Also Read: Laravel Checking If a Record Exists

Running Migrations for Multiple Databases:

When working with multiple databases, you might also need to run migrations for each database separately. Laravel allows you to specify the connection for which migrations should be executed.

php artisan migrate --database=second_db

The above command will run the migrations for the ‘second_db’ connection. By default, migrations run for the default database connection, but you can override it by providing the --database option.


Configuring and using multiple databases in Laravel empowers you to handle complex data scenarios efficiently.

By following the steps outlined in this blog post, you can define multiple database connections, specify connections for specific models, and dynamically switch between connections when needed.

This flexibility enables you to build Laravel applications that seamlessly interact with diverse data sources and cater to a wide range of business requirements.

Share this:

Categorized in: