andriajah Mon May 2020 1 year ago

Tutorial Multiple Database Connection Laravel

Hari ini, saya ingin menunjukkan kepada Anda bagaimana menggunakan beberapa koneksi db di aplikasi laravel 7/6. kita akan belajar menggunakan koneksi multi-database laravel 7/6. Anda akan menemukan cara menerapkan laravel 7/6 contoh beberapa koneksi database.

Saya akan memberi Anda langkah demi langkah implementasi cara menggunakan beberapa koneksi database laravel 6 menggunakan file .env. kita akan menambahkan variabel konfigurasi pada file .env dan menggunakannya untuk file konfigurasi basis data. Anda bisa mengikuti saya, saya juga akan belajar cara bekerja dengan migrasi, model, dan permintaan basis data untuk beberapa koneksi basis data.

Seperti yang kita tahu kadang-kadang kita perlu menggunakan beberapa koneksi database seperti mysql, mongodb dll. Saya dapat mengatakan ketika Anda bekerja dengan sejumlah besar proyek maka Anda mungkin perlu. Jadi mari kita ikuti langkah di bawah ini.

Setel Variabel ENV:

Di sini, Anda perlu mengatur variabel konfigurasi pada file .env. mari kita buat seperti di bawah ini:

.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

Gunakan Variabel ENV:

Sekarang, ketika kita membuat variabel dalam file env, kita perlu menggunakan variabel itu pada file config jadi mari kita buka file database.php dan tambahkan kunci koneksi baru seperti di bawah ini:

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,
        ],
.....       

Gunakan Database Multiple Connection:

Di sini, saya akan memberi Anda contoh sederhana tentang bagaimana Anda dapat menggunakan beberapa koneksi:

Gunakan dengan 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();
    });
}
.....

Gunakan dengan model

<?php
   
namespace App;
  
use Illuminate\Database\Eloquent\Model;
   
class Blog extends Model
{
    protected $connection = 'mysql2';
}

Gunakan dengan Controller

<?php
  
class BlogController extends BaseController
{
    public function getRecord()
    {
        $blogModel = new Blog;
        $blogModel->setConnection('mysql2');
        $find = $blogModel->find(1);
        return $find;
    }
}

Guanakan dengan Query Builder

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

Saya harap ini dapat membantu Anda ...

multiple laravel connection