Wednesday, March 4, 2020

Laravel Using Multiple Database Connections

Laravel Using Multiple Database Connections


Today I want to show you multiple database connection. We'll learn how to use the Laravel 6 Using multiple database connection. You will find a way to implement the Laravel 6 multiple database connection example.

I will explain step by step how to use multiple Laravel 6 database connections using the ENV file. We will insert the configuration variable into the .env file and use it in the database configuration file. You can follow me, I will also learn how to use the migration, model and database query to connect multiple databases.

Since we know that at some point we will have to use multiple database connections like MySQL, Mongodb, etc. I can say that if you work on a lot of projects you may need. Then we follow the next step.

Set ENV Variable:


Here you have to set the configuration variable in the ENV file. We will create as follows:

.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:


If we now create a variable in the env file, we have to use this variable in the configuration file. So open the database.php file and add a new connection key as shown below:

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 Multiple Database Connection:


Here is a simple example of how you can use a multiple connection:

Use with migration

<?php

.....

public function up()

{

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

        $table->increments('id');

        $table->string('title');

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

        $table->timestamps();

    });

}

.....

Use with model

<?php

   

namespace App;

  

use Illuminate\Database\Eloquent\Model;

   

class Blog extends Model

{

    protected $connection = 'mysql2';

}

Use with Controller

<?php

  

class BlogController extends BaseController

{

    public function getRecord()

    {

        $blogModel = new Blog;

        $blogModel->setConnection('mysql2');

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

        return $find;

    }

}

Use with Query Builder

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

print_r($blogs);

   

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

print_r($blogs);


I hope this tutorials: Laravel Using multiple database connection could help you ...

Thanks.


0 comments:

Post a Comment

Please don't enter any spam link in the comment box.