Support the ongoing development of Laravel.io →
Laravel

Hi all! I want to compare data from two tables with the same fields but from two different databases. How do I do this in Laravel? Concretely each table contains the customer number, the amount of the transaction, the currency, the reference and the status. I will retrieve transactions with the same reference but whose status is different.

$table_1 = DB::connection('mysql3')->table('transactions')->select('telco_reference','status')->get(); $table_2 = DB::table('money_transac')->select('telco_reference','status')->get();

dbdxwb liked this thread

1

Hi @henockbarakael ! 👋

You can define multiple database connections in your config/database.php file.

Inside the connections key you see multiple connections already defined. There, you can add another one by copy&pasting the existing connection (eg. for mysql):

        'mysql2' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL_2'),
            'host' => env('DB_HOST_2', '127.0.0.1'),
            'port' => env('DB_PORT_2', '3306'),
            'database' => env('DB_DATABASE_2', 'forge'),
            'username' => env('DB_USERNAME_2', 'forge'),
            'password' => env('DB_PASSWORD_2', ''),
            'unix_socket' => env('DB_SOCKET_2', ''),
            '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'),
            ]) : [],
        ],

Then you can add the variables into your .env file like this (change the values to the correct ones):

DB_HOST_2=127.0.0.1
DB_PORT_2=3306
DB_DATABASE_2=laravel
DB_USERNAME_2=root
DB_PASSWORD_2=
DB_SOCKET_2=
DATABASE_URL_2=

Afterwards you can reference the new database connection like this:

$table_1 = DB::connection('mysql2')->table('transactions')->select('telco_reference','status')->get();
$table_2 = DB::table('money_transac')->select('telco_reference','status')->get();

$table_1 will contain the results from the mysql2 connection that you just defined and $table_2 will contain the results from the main/default connection that Laravel is also using.

Have a great day!

0

Sign in to participate in this thread!

Eventy

Your banner here too?

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.