Laravel 8에서 여러 데이터베이스 사용하기

Laravel 8에는 다양한 유형의 데이터베이스를 사용할 수 있는 많은 옵션이 있습니다. 예를 들어 Oracle 데이터베이스용 SQLite, MYSQL, PostgreSQL, SQL Server, Laravel-OCI8을 사용할 수 있습니다. 때로는 애플리케이션 속도를 높이거나 대용량 데이터베이스 애플리케이션을 단순화하기 위해 단일 Laravel 애플리케이션에 다중 데이터베이스를 사용해야 합니다. 따라서 이 튜토리얼에서는 컨트롤러가 있는 Laravel 8 다중 데이터베이스 및 리소스 경로를 배웁니다.

Laravel에서 다중 데이터베이스를 사용하려면 Database Configuration , set ENV Variables , create Migrations , Eloquent Model , Controller Routes 을 만들어야 합니다. 아래에 제공된 단계를 따르십시오.

**참고: **라라벨 8을 설치하지 않았다면 이 튜토리얼Install Laravel 8을 읽어보세요.



1단계 – Laravel 8에서 데이터베이스에 대한 구성 생성



여기서는 MYSQL 데이터베이스에 대한 구성을 생성합니다. config 디렉토리에서 database.php 파일을 열어야 합니다. 연결 배열 내부에는 기본적으로 첫 번째 데이터베이스에 대한 mysql 키가 있습니다. 두 번째 데이터베이스에 대해 mysql2 키를 하나 더 만들고 아래에 제공된 코드를 붙여넣으면 됩니다.

'mysql2' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST2', '127.0.0.1'),
            'port' => env('DB_PORT2', '3306'),
            'database' => env('DB_DATABASE2', 'forge'),
            'username' => env('DB_USERNAME2', 'forge'),
            'password' => env('DB_PASSWORD2', ''),
            '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'),
            ]) : [],
        ],


2단계 – Laravel 8에서 환경 변수 설정



.env 파일을 열고 코드에서 아래와 같이 데이터베이스 자격 증명을 설정합니다. DB_HOST2, DB_PORT2, DB_DATABASE2, DB_USERNAME2, DB_PASSWORD2는 두 번째 데이터베이스용입니다.

#First Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb1
DB_USERNAME=root
DB_PASSWORD=

#Second Database
DB_HOST2=127.0.0.1
DB_PORT2=3306
DB_DATABASE2=laraveldb2
DB_USERNAME2=root
DB_PASSWORD2=


3단계 – Laravel 8에서 Eloquent 모델 만들기



모델을 만들기 전에 두 개의 샘플 데이터베이스 테이블을 만듭니다.

데이터베이스(laraveldb1)에서 id, customer_name, customer_email, created_at, updated_at, deleted_at 필드가 있는 테이블(Customers)을 생성합니다.

데이터베이스(laraveldb2)에서 id, staff_name, staff_email, created_at, updated_at, deleted_at 필드가 있는 테이블(Staff)을 생성합니다.

app\Models 디렉토리 안에 Customer.php 파일을 생성하고 아래에 주어진 코드를 붙여넣습니다.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Customer extends Model
{
    use HasFactory;

    protected $table = 'customers';

    protected $connection = 'mysql';
}


다시 app\Models 디렉토리 안에 Staff.php 파일을 만들고 아래에 주어진 코드를 붙여넣습니다.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Staff extends Model
{
    use HasFactory;

    protected $table = 'staff';

    protected $connection = 'mysql2';
}



Customer 및 Staff 모델 모두에서 모델 속성$table을 사용하여 테이블 이름을 정의하고 $connection 1단계에서 생성한 연결을 정의했습니다.

4단계 – Laravel 8에서 컨트롤러 생성



먼저, app\Http\Controllers 디렉토리 안에 CustomerController.php 파일을 생성하고 아래 주어진 코드를 붙여넣습니다.

<?php

namespace App\Http\Controllers;

use App\Models\Customer;
use Illuminate\Http\Request;

class CustomerController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $customer = new Customer;
        $customer->customer_name = 'Customer 1';
        $customer->customer_email = '[email protected]';

        if ($customer->save()) {
            return response()->json(['message' => 'Customer Added.']);
        }
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Customer  $customer
     * @return \Illuminate\Http\Response
     */
    public function show(Customer $customer)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Customer  $customer
     * @return \Illuminate\Http\Response
     */
    public function edit(Customer $customer)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Customer  $customer
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Customer $customer)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Customer  $customer
     * @return \Illuminate\Http\Response
     */
    public function destroy(Customer $customer)
    {
        //
    }
}



생성 방법에서 우리는 고객 모델을 사용하여 고객 테이블에 데이터를 삽입했습니다. database queries using Eloquent Model 에 대해 읽을 수 있습니다.

이제 app\Http\Controllers 디렉토리 안에 StaffController.php 파일을 만들고 아래 코드를 붙여넣으세요.

<?php

namespace App\Http\Controllers;

use App\Models\Staff;
use Illuminate\Http\Request;

class StaffController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $staff = new Staff;

        $staff->staff_name = 'Staff 1';
        $staff->staff_email = '[email protected]';
        if ($staff->save()) {
            return response()->json(['message' => 'Staff Added']);
        }
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Staff  $staff
     * @return \Illuminate\Http\Response
     */
    public function show(Staff $staff)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Staff  $staff
     * @return \Illuminate\Http\Response
     */
    public function edit(Staff $staff)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Staff  $staff
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Staff $staff)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Staff  $staff
     * @return \Illuminate\Http\Response
     */
    public function destroy(Staff $staff)
    {
        //
    }
}



마찬가지로 create 메소드에서 Staff 모델을 사용하여 직원 테이블에 데이터를 삽입했습니다. database queries using Eloquent Model 에 대해서도 읽을 수 있습니다.

5단계 – Laravel 8에서 리소스 경로 생성



route 디렉토리 내에서 web.php 파일을 열고 아래 주어진 코드를 붙여넣습니다.

use App\Http\Controllers\CustomerController;
use App\Http\Controllers\StaffController;

Route::resource('customers', CustomerController::class);

Route::resource('staffs', StaffController::class);


이제 모든 Laravel 애플리케이션에서 다중 데이터베이스를 사용할 수 있습니다. 이제 컨트롤러가 포함된 Laravel 8 다중 데이터베이스 및 리소스 경로를 사용하여 Laravel 애플리케이션의 속도를 높이고 단순화할 수도 있습니다.


좋아요, 공유 및 긍정적 인 피드백을 제공하여 더 많은 글을 쓸 수 있도록 동기를 부여하십시오.

더 많은 튜토리얼을 보려면visit my website .

감사:)
행복한 코딩 :)

좋은 웹페이지 즐겨찾기