In this tutorial you will learn about the Laravel 8 Multiple Database Connection Example and its application with practical example.
In this Laravel 8 Multiple Database Connection Example tutorial I will show you how to connect or use multiple database in single laravel project. In this tutorial you will learn to connect or use multiple database in single laravel project. Sometimes we may need to connect multiple databases in our Laravel application. In this article I will share with you how to connect single or multiple databases using a laravel application.
Laravel 8 Multiple Database Connection Example
In this step by step tutorial I will demonstrate you how to connect multiple database in one laravel application. Please follow the instruction given below:
Set ENV Variable:-
1 2 3 4 5 6 7 8 9 10 11 12 13 |
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=mydatabase DB_USERNAME=root DB_PASSWORD=root DB_CONNECTION_SECOND=mysql DB_HOST_SECOND=127.0.0.1 DB_PORT_SECOND=3306 DB_DATABASE_SECOND=mydatabase2 DB_USERNAME_SECOND=root DB_PASSWORD_SECOND=root |
Use ENV Variable:-
Open database.php file and add new connections key as shown
config/database.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php use Illuminate\Support\Str; return [ 'default' => env('DB_CONNECTION', 'mysql'), 'connections' => [ ..... 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), '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' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], 'mysql2' => [ 'driver' => env('DB_CONNECTION_SECOND'), 'host' => env('DB_HOST_SECOND', '127.0.0.1'), 'port' => env('DB_PORT_SECOND', '3306'), 'database' => env('DB_DATABASE_SECOND', 'forge'), 'username' => env('DB_USERNAME_SECOND', 'forge'), 'password' => env('DB_PASSWORD_SECOND', ''), 'unix_socket' => '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, ], ..... |
How to use Multiple Database Connection
In this example I will show you how to use multiple database connection in your laravel application:
Laravel Database Connection In migration
Default:-
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php ..... public function up() { Schema::create('blog', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->string('body')->nullable(); $table->timestamps(); }); } ..... |
You can modify above snippet with connection specific as following:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php ..... public function up{ Schema::connection('mysql2')->create('blog', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->string('body')->nullable(); $table->timestamps(); }); } ..... |
Laravel Database Connection In model
Default:
1 2 3 4 5 6 7 8 9 |
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Blog extends Model { } |
You can specify database connection in model file as following:
1 2 3 4 5 6 7 8 9 10 |
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Blog extends Model{ protected $connection = 'mysql2'; } |
Laravel Database Connection In Controller
Default:
1 2 3 4 5 6 7 8 9 10 11 |
<?php class BlogController extends BaseController { public function getRecord() { $blogModel = new Blog; $find = $blogModel->find(1); return $find; } } |
You can specify database connection in controller file as following:
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php class BlogController extends BaseController { public function getRecord() { $blogModel = new Blog; $blogModel->setConnection('mysql2'); $find = $blogModel->find(1); return $find; } } |
Laravel Database Connection In Query Builder
Default:
1 2 |
$blogs = DB::table("blog")->get(); print_r($blogs); |
You can specify database connection in query as following:
1 2 |
$blogs = DB::connection('mysql2')->table("blog")->get(); print_r($blogs); |