ItSolutionStuff.com

Laravel 8 Multiple Database Connection Example

By Hardik Savani β€’ November 5, 2023
Laravel

Are you looking for example of laravel 8 multiple database connection. This tutorial will give you simple example of multiple database connection in laravel 8. let’s discuss about laravel 8 multiple database connections .env. Here you will learn multiple db connection in laravel 8. Let's get started with multi database connection laravel 8.

I will give you step by step implementation of how to use laravel 8 multiple database connections using .env file. we will add configuration variable on .env file and use it to database configuration file. You can just follow me, i will also learn how to work with migration, model and database query for multiple database connection.

As we know sometime we need to use multiple database connection like mysql, mongodb etc. i can say when you work with large amount of project then you will need maybe. So let's follow bellow step.

Set ENV Variable:

Here, you need to set configuration variable on .env file. let's create as bellow:

.env

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:

Now, as we created variable in env file, we need to use that variable on config file so let's open database.php file and add new connections key as like bellow:

config/database.php

<?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,

],

.....

Use Database Multiple Connection:

Here, i will give you simple example of how you can use as multiple connection:

Database Connection with migration

Default:

<?php

.....

public function up()

{

Schema::create('blog', function (Blueprint $table) {

$table->increments('id');

$table->string('title');

$table->string('body')->nullable();

$table->timestamps();

});

}

.....

Second:

<?php

.....

public function up()

{

Schema::connection('mysql2')->create('blog', function (Blueprint $table) {

$table->increments('id');

$table->string('title');

$table->string('body')->nullable();

$table->timestamps();

});

}

.....

Database Connection with model

Default:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Blog extends Model

{

}

Second:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Blog extends Model

{

protected $connection = 'mysql2';

}

Database Connection in Controller

Default:

<?php

class BlogController extends BaseController

{

public function getRecord()

{

$blogModel = new Blog;

$find = $blogModel->find(1);

return $find;

}

}

Second:

<?php

class BlogController extends BaseController

{

public function getRecord()

{

$blogModel = new Blog;

$blogModel->setConnection('mysql2');

$find = $blogModel->find(1);

return $find;

}

}

Database Connection with Query Builder

Default:

$blogs = DB::table("blog")->get();

print_r($blogs);

Second:

$blogs = DB::connection('mysql2')->table("blog")->get();

print_r($blogs);

I hope it can help you...

Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

πŸ“Ί Subscribe on YouTube

We Are Recommending You

β˜…

Laravel 8 Cron Job Task Scheduling Tutorial

Read Now β†’
β˜…

Laravel 8 Socialite Login with Google Account Example

Read Now β†’
β˜…

Laravel 8 Autocomplete Search from Database Example

Read Now β†’
β˜…

Laravel 8 Inertia JS CRUD with Jetstream & Tailwind CSS

Read Now β†’
β˜…

Laravel 8 Import Export Excel and CSV File Tutorial

Read Now β†’
β˜…

Laravel 8 Guzzle Http Client Request Example

Read Now β†’
β˜…

Laravel 8 Mail | Laravel 8 Send Email Tutorial

Read Now β†’
β˜…

Laravel 8 PDF | Laravel 8 Generate PDF File using DomPDF

Read Now β†’
β˜…

Laravel 8 Auth with Inertia JS Jetstream Tutorial

Read Now β†’
β˜…

Laravel 8 Create Custom Helper Functions Tutorial

Read Now β†’
β˜…

Laravel 8 CRUD Application Tutorial for Beginners

Read Now β†’