andriajah Sun Apr 2022 1 year ago

Contoh Multiple Database Connections di Laravel 9

Sekarang, mari kita lihat contoh koneksi multiple database laravel 9. Saya menjelaskan secara sederhana bagaimana menggunakan beberapa koneksi database di laravel 9. jika Anda ingin melihat contoh beberapa koneksi database di laravel 9 maka Anda berada di tempat yang tepat. Anda dapat memahami konsep laravel 9 beberapa koneksi database .env. anda akan melakukan hal-hal berikut untuk beberapa koneksi DB di laravel 9.

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

Seperti yang kita ketahui terkadang kita perlu menggunakan beberapa koneksi database seperti MySQL, MongoDB, dll. Saya dapat mengatakan ketika Anda bekerja dengan sejumlah besar proyek maka Anda mungkin membutuhkannya. Jadi mari kita ikuti langkah-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

 

Database Configuration:

Sekarang, saat kita membuat variabel dalam file env, kita perlu menggunakan variabel itu pada file konfigurasi 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'),
            ]) : [],
        ],
        'mysql_second' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL_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' => env('DB_SOCKET_SECOND', ''),
            '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'),
            ]) : [],
        ],
.....        

 

Mendapatkan Data dari Beberapa Database menggunakan DB:

Saya akan memberikan membuat dua route dengan mendapatkan produk dari koneksi database yang berbeda. Anda dapat melihat contoh sederhana dengan DB. mari tambahkan dua route di file Anda:

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
/*------------------------------------------
--------------------------------------------
Getting Records of Mysql Database Connections
--------------------------------------------
--------------------------------------------*/
Route::get('/get-mysql-products', function () {
    $products = DB::table("products")->get();
      
    dd($products);
});
  
/*------------------------------------------
--------------------------------------------
Getting Records of Mysql Second Database Connections
--------------------------------------------
--------------------------------------------*/
Route::get('/get-mysql-second-products', function () {
    $products = DB::connection('mysql_second')->table("products")->get();
      
    dd($products);
});

 

Multiple Database Connections dengan Migration:

Anda dapat membuat migrasi terpisah untuk beberapa koneksi database:

Default:

<?php
.....
public function up()
{
    Schema::create('blog', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->string('body')->nullable();
        $table->timestamps();
    });
}
.....

 

Second Database:

<?php
.....
public function up()
{
    Schema::connection('mysql_second')->create('blog', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->string('body')->nullable();
        $table->timestamps();
    });
}
.....

 

Multiple Database Connections dengan Model:

Default:

<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Product extends Model
{
    use HasFactory;
   
    protected $fillable = [
        'name', 'detail'
    ];
}

 

Second Database:

<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Product extends Model
{
    use HasFactory;
  
    protected $connection = 'mysql_second';
  
    protected $fillable = [
        'name', 'detail'
    ];
}

 

Multiple Database Connections di Controller:

Default:

<?php
  
use App\Models\Product;
    
class ProductController extends BaseController
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function getRecord()
    {
        $products = Product::get();
        return $products;
    }
}

 

Second Database:

<?php
use App\Models\Product;
  
class ProductController extends BaseController
{
    
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function getRecord()
    {
        $product = new Product;
        $product->setConnection('mysql_second');
        $something = $product->find(1);
        return $something;
    }
}

 

Saya harap ini dapat membantu Anda ...

laravel laravel 9 tutorial laravel 9 multiple database connections laravel 9