Home > Web Development > Laravel Tutorials > How to easily connect multiple databases in Laravel

How to easily connect multiple databases in Laravel

Diego Cortés
Diego Cortés
January 20, 2025
How to easily connect multiple databases in Laravel

In web application development, managing data from different sources is a common task that can become complicated. Laravel, as a PHP framework, offers powerful tools that facilitate this work. In this article, we will explain how you can easily connect multiple databases in Laravel, allowing developers to optimize their projects and handle data more efficiently.

Configuring Multiple Connections in Laravel

Laravel allows the configuration of several database connections from its configuration file. To start, you need to open the config/database.php file. This file contains the configurations for all the database connections.

Step 1: Define New Connections

Within this file, you will find an array called connections, where the connections you will use are defined. You can add a new connection simply by replicating the structure of an existing connection, such as the mysql connection. Below is an example of how to define multiple databases:

'mysql' => [
    'driver' => 'mysql',
    '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' => '',
    'strict' => true,
    'engine' => null,
],

'second_mysql' => [
    'driver' => 'mysql',
    'host' => env('SECOND_DB_HOST', '127.0.0.1'),
    'port' => env('SECOND_DB_PORT', '3306'),
    'database' => env('SECOND_DB_DATABASE', 'forge'),
    'username' => env('SECOND_DB_USERNAME', 'forge'),
    'password' => env('SECOND_DB_PASSWORD', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],

Step 2: Configuring the .env File

After defining the connections in database.php, it is essential to configure the .env file so that Laravel recognizes the new databases. Here you can set the necessary environment variables for each connection:

SECOND_DB_HOST=127.0.0.1
SECOND_DB_PORT=3306
SECOND_DB_DATABASE=database_name
SECOND_DB_USERNAME=user
SECOND_DB_PASSWORD=password

Using Connections in Models

To use different connections in your models, you simply need to specify the connection you want to use. This is done by defining a property $connection in your model. For example:

class User extends Model
{
    protected $connection = 'second_mysql';
}

In this way, all operations related to the User model will be executed in the database defined by second_mysql.

Performing Queries on Multiple Databases

When working with multiple databases, you can perform queries on the desired connection using the DB::connection method. This method allows you to specify the connection with a set of commands:

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

This allows you to query the users table from the second database with ease.

Conclusion

Connecting multiple databases in Laravel is not only possible but also easy, thanks to the flexibility and power of the framework. With just a few simple steps, you can manage different data sources and optimize the performance of your application.

If you want to continue learning about Laravel and other topics related to web development, I invite you to read more news on my blog.

Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categories

Page loaded in 29.47 ms